现在的位置: 首页 > 综合 > 正文

querystring传递中文出现乱码的问题

2013年01月26日 ⁄ 综合 ⁄ 共 1225字 ⁄ 字号 评论关闭

原因:默认浏览器有utf-8编码,vs2005中默认也是utf-8,

解决方法:修改web.config文件添加<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />

问题2:如果在网页中调用的第三方控件和编写了<script >代码的话,用gb2312编码的话,第三方控件会出错,

原因:js一般用utf-8编码

解决办法:不修改web.config文件,只对需要传值的页面修改编码。在Page_Load()中添加解码语句,将传递至解码。使用到的命名空间System.collection.Specialized 函数NameValueCollection nc = HttpUtility.ParseQueryString(Request.Url.Query, Encoding.GetEncoding("utf-8"));string sort = nc["Sort"]; string zgdw = nc["Zgdw"];这样,用utf-8编码的字符串就可以正常解析出汉字了。

 

 

方法1.设置web.config文件 

 

<system.web> 

 

<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> 

 

</system.web> 

方法2.asp.net对asp.net页面传值 

进行传递 

string Name = "中文参数"; 

Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)); 

进行接收 

string Name = Request.QueryString["Name"]; 

Response.Write(Server.UrlDecode(Name)); 

方法3.javascript对asp.net页面传值。 

 

<script language="javascript"> 

function escode() 

location.href ="B.aspx?Name="+escape(Name); 

</script> 

在asp.net页面中正常使用Request.QueryString("Name").toString()就可以得到正确的中文了

方法4: 

<a href="#" onclick="window.location = encodeURI('<%# "PhoneManager.aspx?BMNAME="+DataBinder.Eval(Container.DataItem,"BMNAME")%>')">员工联系方式</a>

 

在asp.net页面中使用Request["BMNAME"]就可以正常取得汉字了。 

抱歉!评论已关闭.