保存cookie时编码问题

项目中某些过滤条件需要persist,故可以放入Cookie中来实现。一般都没啥问题。

但是项目里有些人名是德文的,populate的时候就出现问题了。

存的时候:Biesenbach, Frank-Germany-Düsseldorf

来的时候:Biesenbach, Frank-Germany-Düsseldorf

显然是cookie编码的问题。

解决方案是:

1.确认webconifg中全局设置是否正确

<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

2.如果已经设置成utf-8的话,直接使用UrlEncode和UrlDecode来保存和取出Cookie值即可

HttpUtility.UrlDecode(Request.Cookies["XXX"].Value)
Response.Cookies["XXX"].Value = HttpUtility.UrlEncode(xxx)

3.如果网站全局设置是gb2312的话。需要再加一层处理了

Encoding encoding = Encoding.GetEncoding("UTF-8");
HttpUtility.UrlDecode(str,encoding);

存的时候不需要加一层处理,直接UrlEncode(如上)即可。

 

 

posted @ 2013-05-22 12:51  nickycookie  阅读(1121)  评论(0编辑  收藏  举报