保存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(如上)即可。