网站首页文章中心电子书下载矢量图库在线视频教程素材下载程序代码下载视频教程下载JS代码

Javascript 和 ASP.NET 关于URL(GET方式)传递中文乱码的问题解决方案

作者:未知 文章来源:网络

在实际的开发中,我们在页面和页面之间进行数据传递的时候,有些时候我们会选择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(解密),灵活运用,就可以解决中文参数传递乱码问题。


最新文章
热门文章
  • 没有推荐文章