IE10和cookies编码

时间:2013-07-03 13:36:17

标签: javascript asp.net-mvc-4 cookies encoding internet-explorer-10

如果我在服务器上创建一个值为'ë'的cookie,当我在客户端读取它时,它会变为'Ã'。

仅在IE(10)中出现。我不会在其他浏览器(Chrome和Firefox)上遇到此问题。

创建cookie的方式:

HttpContext.Current.Response.Cookies.Add(new HttpCookie("test", "ë"));

1 个答案:

答案 0 :(得分:0)

Per RFC 2109(sec.4.2.2)和RFC 2616(sec.2.2,4.2),HTTP标头只能在ISO-8859-1中传输。 (有一个例外,但这主要用于MIME,在HTTP中几乎没见过。)由于ISO-8859-1实际上只是一系列八位字节,服务器可以选择使用不同的编码(UTF8,in这种情况)如果它愿意,因为cookie无论如何都要由客户不透明地处理。因此,在所有情况下都应该正确地往返,但如果客户端尝试解析 cookie,它将根据它是否跟踪RFC而得到不同的结果。

如果可能的话,请尽量避免在标题中发送非ASCII字符。 HTTP规范从来没有真正解决这个问题,因此在实践中使用时会引起痛苦和心痛。 :(