浅谈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里, 你其他页面都还是默认的.
浙公网安备 33010602011771号