cookie乱码

wulang 2007-10-11 11:20:48
为什么cookie在VS里运行时没问题,一到IIS里就乱码?

我知道是编码的问题,用UrlEncode/UrlDecode就能解决问题,但是有几个问题:

1. VS里没问题,IIS里就有问题,是不是IIS的设置有问题?

2. 大家都说是ASP与ASP.net共享Cookie时才会有这种问题,就连微软的解释也是这样:“默认情况下 ASP.NET 不以 UrlEncode 格式对 Cookie 进行编码”(http://support.microsoft.com/default.aspx?scid=kb;zh-cn;313282),而我没有用到ASP和ASP.net共享Cookie,即使在同一个页面里接连写读cookie都会乱码。

3. 真正蹊跷的在这里,请大耐心看完并自己试试,分别建一个a.asp和b.aspx,页面不要设编码类型
a.asp
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%
Response.Cookies("a") = "你好"
Response.Write(Request.Cookies("a"))
Response.Write(Request.Cookies("b"))
%>

b.aspx
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%
Response.Cookies("b").Value = "你好"
Response.Write(Request.Cookies("a").Value)
Response.Write(Request.Cookies("b").Value)
%>

在IIS打开网页,先打开a.asp,再打开b.aspx,先打开b.aspx会报错,因为Cookies("a")未定义。
这时,b.aspx中显示“%E4%BD%A0%E5%A5%BD你好”,这个容易理解,就像微软所说,“默认情况下 ASP.NET 不以 UrlEncode 格式对 Cookie 进行编码”,
精彩的在这里,刷新一下b.aspx,“%E4%BD%A0%E5%A5%BD浣犲ソ”,后面的变乱码了,而a.asp刷新后显示“你好你好”,再刷新也不变。

这样就有点说不通了,既然默认情况下 ASP.NET 不以 UrlEncode 格式对 Cookie 进行编码,那为什么a.asp中两个cookie都显示正常?
b.aspx中第一次显示的内容印证了“默认情况下 ASP.NET 不以 UrlEncode 格式对 Cookie 进行编码”,但为什么刷新一遍asp.net自己的cookie就乱码?

不知大家有什么高见?
...全文
436 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun_Ke 2007-10-18
  • 打赏
  • 举报
回复
Cookie中尽量别用中文
hellunter 2007-10-18
  • 打赏
  • 举报
回复
强制转换,强制转回
octverve 2007-10-12
  • 打赏
  • 举报
回复
都转成ASCII,再转回来就没有问题了
octverve 2007-10-12
  • 打赏
  • 举报
回复
Cookie中存中文是会出现问题的,一般对中文编码后再存入。
请看这个帖子也你的类似
http://topic.csdn.net/u/20071002/13/d34c6478-f48c-4236-9579-5e07ccaaff76.html?seed=1064251217

这是我的Blog的相关文章
http://blog.csdn.net/octverve/archive/2007/10/02/1809865.aspx

希望对你有帮助。

62,040

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧