IE浏览器cookie中的特殊字符

本文关键字:特殊字符 cookie 浏览器 IE | 更新日期: 2023-09-27 18:14:06

我从服务器保存一个数组Json在cookie中,如下所示:

HttpCookie myCookie = Request.Cookies["ProcessArray"];

myCookie。Value = JSONC.Serialize(lstProcess);

和在Chrome我得到这个(与javascript):

ProcessArray=[{"ProcessID":1,"Description"; "Adquisición de Articulos","Path";internalprocess.aspx?process=1"}]"

但是在IE(8,9,10)中,我得到这个:

"ProcessArray =[{"ProcessID" 1、"Description":"AdquisiciA³n deArticulos"Path":"internalprocess.aspx ?过程= 1"}]"

我能做什么?

IE浏览器cookie中的特殊字符

óó的UTF-8编码版本

我猜是你的JSON序列化器正在转换为UTF-8。也许可以输出ISO-8859-1代替?(参见UTF-8和ISO-8859-1有什么区别?)

如果你通过Set-Cookie HTTP头(vs.在JavaScript)设置cookie, IE可能处理这个不同的Chrome。(参见HTTP报头应该使用什么字符编码?)

Update: EricLaw关于使用US-ASCII的评论是正确的。我认为RFC 2047是最好的参考,它引入了"编码词"。用于US-ASCII以外的字符集。

然而,在这个特殊的例子中,这个cookie值是JSON,而不是使用编码的单词或%XX URL编码,所以我将使用JavaScript字符串转义序列(参见特殊字符(JavaScript)和将Unicode字符串转换为转义的ascii字符串)。ó是字符0xF3,所以在JSON格式的cookie值中使用字符串''u00F3'。这允许任何客户端cookie读取,只需JSON.parse()值。

"ProcessArray =[{"ProcessID" 1、"Description":"Adquisici ' u00F3n deArticulos"Path":"internalprocess.aspx ?过程= 1"}]"