我从服务器保存一个数组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"}]"
我能做什么?
ó
是ó
的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"}]"