日期:2014-05-18  浏览次数:20483 次

请教关于 cookie和编码问题的灵异事件
问题如下:
当用户登录后,把用户名,密码等信息放在cookie里,可是在取时,英文用户的没问题,汉字有取不到,用如下判段:
if(   !Object.Equals(   MyContext.Request.Cookies[ "FUserName "],null   )   )
{
Response.Write( " <!--##11 "+MyContext.Request.Cookies.Count+ "11@@--> ");
strUserID   =   MyContext.Request.Cookies[ "FUserName "].Value.ToString();
}
发现if里的语句执行,但输出的是空值

以前这个是好用的,但上两天换了台服务器,汉字就不好用了,
1:程序这边的编码都是UTF-8
2:服务器上的语言区域设置也改成了china
3:另我做测试,在当前页(.aspx)下写入cookie,读取cookie时可以取到,但换一个页就取不到了
(以上现像都是只汉字而言)
望在这里能得到解决,
                                                                                                                  谢..

------解决方案--------------------
换个编码试试,比如GB2312

PS:编码时,除了注释,最好不要用中文
------解决方案--------------------
存入时最好指定编码格式。。。
------解决方案--------------------
HttpContext.Current.Server.UrlEncode(cookieValue)
HttpContext.Current.Server.UrlDecode(HttpContext.Current.Request.Cookies[name][key])
------解决方案--------------------
写入 cookie的时候
使用 HttpUtility.UrlEncode(cookieValue);

读取的使用HttpUtility.UrlDecode(cookieValue);
------解决方案--------------------
英文 支持 汉字乱码 典型的 编码灵异事件。。 呵呵
------解决方案--------------------
你說的服务器上的语言区域设置也改成了china,是不是嚴格按照下面步驟設定?就沒有問題了。

点击开始> 控制面版> 地区和语言选項> 打开高级选项改变Unincode程序语言为 "Chinese (PRC) " 简体中文,然后点OK确定。