巧用escape解决ASP.NET中URL传参乱码问题
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-03-13
程序代码 <a href="#" onclick="window.open(''http://www.webjx.com/test.aspx?title=网页教学网'');">Links</a>
在test.aspx中,只要获取title参数的值并显示出来即可,本来用Request["title"]就可解决的问题却因链接所处页面的编码不同而变得复杂起来: 当链接所处的页面是用GB2312编码时,如果test.aspx也是GB2312则获取的参数值不乱码,否则乱码; 当链接所处的页面是用UTF-8编码时,如果test.aspx也是UTF-8则获取的参数值不乱码,否则乱码; gb.htm: <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>gb2312测试页</title> </head> <body> <a href="#" onclick="window.open(''http://www.webjx.com/test.aspx?title=网页教学网'');">Links</a> </body> </html> utf8.htm: <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>utf-8测试页</title> </head> <body> <a href="#" onclick="window.open(''http://www.webjx.com/test.aspx?title=网页教学网'');">Links</a> </body> </html> test.aspx.cs: private void Page_Load(object sender, System.EventArgs e)
{ String Request1; Request1 = Request["title"]; Response.Write(Request1); } 有没办法让test.aspx不论URL中的参数以何种方式编码都能正常的获取显示呢?通过配置web.config的<globalization requestEncoding="gb2312|utf-8" />都只会顾此失彼,不能完美的解决我们的问题。最终,在老农的提示下使用JS的escape问题得以完美解决: gb.htm: <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>gb2312测试页</title> <script language="javascript"> function winopen(url,width,height) { var newurl,arrurl; if(typeof(url) == "undefined" || url == "") { return ; } else { if(url.indexOf("?") == -1) { newurl = url; } else { newurl = url.substring(0,url.indexOf("?")+1); arrurl = url.substring(url.indexOf("?")+1).split("&"); for(var i =0;i<arrurl.length;i++) { newurl += arrurl[i].split("=")[0] + "=" + escape(arrurl[i].split("=")[1]) + "&"; } newurl = newurl.substring(0,newurl.length-1); } } if(typeof(width) != "number" || typeof(height) != "number") { window.open(newurl); } else { window.open(newurl,"","width=" + width + ",height=" + height); } } </script> </head> <body> <a href="#" onclick="winopen(''http://www.webjx.com/test.aspx?title=网页教学网'');">Links</a> </body> </html> |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 在VS2005中创建并使用MasterPage下一篇: C#实现USB接口的程序代码
关于巧用escape解决ASP.NET中URL传参乱码问题的所有评论