

在实际的开发中,我们在页面和页面之间进行数据传递的时候,有些时候我们会选择GET方式传递参数,例如:
url: "ajax/UpdateDept.aspx?id=" + id + "&name=" + DeptName;
这是用js传递参数给aspx页面,然后进行数据更新,其中DeptName为中文参数,当我们使用这种方式去更新数据的时候,就会出现更新后的数据为乱码的情况,因此我们需要注意的是:凡是通过GET方式进行URL传递中文参数一定要进行URL编码!
首先了解一下什么是URL编码?
URL编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值,将它们以name/value参数编码(移去那些不能传送的字符, 将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况, 在服务器端的表单输入格式样子象这样:
theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
URL编码遵循下列规则: 每对name/value由&符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =, &, 和 % 这些特殊的字符。
如何解决URL中文参数传递编码问题?
首先Js方面,进行URL编码:
url: "ajax/UpdateDept.aspx?id=" + id + "&name=" + escape(DeptName);
ASP.NET接收页面,进行接收参数并解码:
string pName = Server.UrlDecode(Request.QueryString["name"]);
这样传递中文就不会出现乱码问题,另外除了Js可以用escape进行中文参数编码外,ASP.NET方面也有URL编码的函数Server.UrlEncode(加密)和Server.UrlDecode(解密),灵活运用,就可以解决中文参数传递乱码问题。