关于ASP.NET中Request.QueryString的乱码问题

精贴 置顶
2724 0

ASP.NET默认使用的都是UTF-8编码,而大家一般使用的都是GB2312编码。这就是Request.QueryString时中文变成乱码的原因所在,也因为这样,才为大家带来了很多麻烦。

  下面我们来看两个参数:“test.aspx?string=%b7%e7%a4%ce%ca%c0%bd%e7”和“test.aspx?string=%e9%a3%8e%e3%81%ae%e4%b8%96%e7%95%8c ”。粗略一看,这是给test.aspx页面传递了两个不一样的参数,可是经过正确的URL反编码后,可以发现这两个其实是同一个参数:风の世界!为什么同一个参数会得到两个不一样的字符串呢?这是因为第一个参数是用GB2312的URL编码的,而第二个那个则是用UTF-8编码的。如果我们在test.aspx中直接用Request.QueryString["string"]还取值,会发现第一个参数不能正常取值,而第二个参数则正常。这是因为ASP.NET中在不指定编码的时候,默认是使用UTF-8的编码,自然进行URL反编码的时候用的也是UTF-8编码了。那么,GB2312的URL编码的内容,用UTF-8的URL反编码,那肯定是会不正常的。

  对于这问题,解决方法如下:

  1、提交的参数是经过UTF-8 URL编码的。

  这种情况下,可以不作任何处理即可取到正常的值。例如我提交的是“test.aspx?string=%e9%a3%8e%e3%81%ae%e4%b8%96%e7%95%8c ”,那么获取的方法如下:


   'Visual Basic.NET

   Dim stringValue As String

   stringValue = Request.QueryString("string")

   Response.Write(stringValue)


   //Visual C#

   string stringValue;

   stringValue = Request.QueryString["string"];

   Response.Write(stringValue);


  2、提交的参数是经过GB2312 URL编码的。

  在这种情况下,就不能直接取值了。可以用下面的方法:


   'Visual Basic.NET

   '引用System.Collections.Specialized和System.Text命名空间

   Dim stringValue As String

   Dim gb2312Requests As NameValueCollection

   gb2312Requests = HttpUtility.ParseQueryString(Request.Url.Query, Encoding.GetEncoding("GB2312"))

   Response.Write(gb2312Requests("string")) '里面的string就是你提交的参数的Key


   //Visual C#

   '引用System.Collections.Specialized和System.Text命名空间

   string stringValue;

   NameValueCollection gb2312Requests;

   gb2312Requests = HttpUtility.ParseQueryString(Request.Url.Query, Encoding.GetEncoding("GB2312"))

 &

  • 没有任何评论
今日天气 ···

···

···

···

热门排行
用ASP实现网页BBS 2010-11-01
CSS cursor鼠标样式一览表 2012-06-25
.NET后台写JS代码 2011-11-03
网站地址多出jdfwkey的问题解析及... 2010-08-25
数据库xxx的日志已满,请备份该数... 2013-07-19
百度、google、Yahoo网站地图制作... 2011-01-30
<a>标签的伪类书写顺序问题... 2010-09-04
什么是长尾关键词? 2010-09-24
CEO名言 2010-08-31
Mysql 主从数据库同步 2010-09-12
博主推荐
本个人博客微信公众平台上线啦~~... 2013-10-13
饼哥网络互联上线啦~~要买域名空... 2013-09-20
网站title标题如何正确修改不会被... 2013-08-26
饼哥通讯录系统上线啦,欢迎大家... 2013-08-24
ASP .NET MYSQL 的简单分页 并不... 2013-08-19
网站有弹窗广告这样的站点,百度... 2013-08-17
做淘宝SEO优化需要注意的8大问题 2013-08-17
淘宝网怎么做SEO优化 2013-08-17
站长们要学习的“苍井空精神” 2013-08-17
苹果公司今日发布了iOS 7第五个开... 2013-08-07
随便看看
SQL快捷键大全 2010-09-09
站长必去的十个编程网站 2010-10-19
Java base64 编码和解码案例 2013-06-26
什么是SEO?怎么理解SEO最酷? 2010-10-09
将黑客扼杀在从注册表路径里 2010-10-15
IE6 li:hover兼容问题 2010-09-06
Win2003不显示移动硬盘、U盘解决... 2013-11-23
SEO一般有哪些步骤或环节? 2010-09-20
让fckeditor编辑器与IE10兼容的几... 2013-12-20
网站title标题如何正确修改不会被... 2013-08-26
RSS新闻
传媒新闻
CSDN
八卦新闻
女性新闻
台湾新闻
互联网
军事-新浪博客
IT-新浪博客
汽车新闻
游戏新闻
国际新闻
国内新闻
体育新闻
我的微博
北京 上海 杭州 深圳 广州 成都