代码改变世界

浅谈asp.net的编码问题

2013-04-19 16:11  河蟹社会  阅读(275)  评论(0)    收藏  举报

asp.net默认的是utf-8的编码,在url上传中文是没有问题的.

如果你前面通过XX.UrlEncode(XX代表,Server,或者HttpUtility),编码过.另外个页面,request[""]得到你的参数, 是不需要再XX.UrlDecode的, c#是给我们做好了的.

 

HttpUtility.UrlEncode,这个方法是有3个重载的, 比Server.UrlEncode多了一个,根据你指定的编码格式来进行转换. 你可以转换成gbk(gb2312),utf-8,utf-8等等其他类型.

一般在我们自己asp.net网站里,编码都是统一utf-8的,基本没有乱码的情况. 可如果要接收一个外部链接传过来的一个参数,他用其他编码格式,比如gb2312,那样用request[]获取(也只有用他了, Request.QueryString[]和他一样)就会出现乱码了, 他会自动帮你用utf-8来转(默认的). 我们要做的就是指定这个Request的request encoding格式了.

在web.config 里可以这样改

 <system.web> 
<globalization requestEncoding="gb2312" responseEncoding="utf-8" culture="zh-CN" fileEncoding="gb2312"/>
 </system.web>

这样问题来了, 我们只希望这一个页面的request encoding 是gb2312, 其他的我们还希望是默认的utf-8怎么半呢.

可以这样

  <location path="XXHandler.ashx">
    <system.web>
      <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312"/>
    </system.web>
  </location>

OK,所有问题都解决了.

他只作用在这XXhandler.ashx里, 你其他页面都还是默认的.

 

襄阳弓长弓虽:t.sina.com/xyzhangqiang