您的位置:首页 > 编程语言 > ASP

在ASP.NET不同版本间保存中文信息到Cookie中的差异

2007-03-29 17:58 525 查看
在Cookie中存储中文时,ASP.NET 1.1和ASP.NET 2.0的做法不同,另外ASP.NET读取ASP写入的中文Cookie时,需要UrlDecode解码。
ASP.NET 1.1中直接把中文写入Cookie,然后读取Cookie,一切显示正常。
写入:Response.Cookie[“Name”] = “测试”;
读取:Response.Write(Request.Cookie[“Name”]);
环境:IIS + .NET Framework 1.1
ASP.NET 2.0中需要将中文用UrlEncode编码后写入Cookie,读取Cookie后要先用UrlDecode解码才可以正常显示。

写入:Response.Cookie[“Name”] = Server.UrlEncode(“测试”);
读取:Response.Write(Server.UrlDecode(Request.Cookie[“Name”]));
环境:IIS + .NET Framework 2.0
 

ASP中写入Cookie时默认会以UrlEncode编码,读取时会用UrlDecode解码。(参见:PRB:默认情况下 ASP.NET 不以 UrlEncode 格式对 Cookie 进行编码http://support.microsoft.com/?scid=kb%3Bzh-cn%3B313282&x=4&y=12),所以当ASP.NET中读取ASP写入的Cookie时,必须使用UrlDecode解码才可以正常显示。
另外ASP.NET中,当使用Form验证时生成的加密Cookie,在1.1和2.0版本中是不能直接共享读取的,因为使用了不同的加密算法。博客园的dudu有一篇文章详细描述了此问题并给出了解决办法(参见:从ASP.NE T 1.1升级到ASP.NET 2.0需要考虑的Cookie问题 http://www.cnblogs.com/dudu/archive/2006/03/14/350150.html)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐