我正在使用类似这样的服务器在服务器中保存一个Array Json:
HttpCookie myCookie = Request.Cookies [“ProcessArray”];
myCookie.Value = JSONC.Serialize(lstProcess);
在Chrome中我得到了这个(使用javascript):
的document.cookie
“ProcessArray = [{”ProcessID“:1,”Description“:”AdquisicióndeArticulos“,”Path“:”internalprocess.aspx?process = 1“}]”
但是在IE(8,9,10)中我得到了这个:
的document.cookie
“ProcessArray = [{”ProcessID“:1,”Description“:”Adquisiciónde Articulos “ ”路径“: ”internalprocess.aspx过程= 1“}]”
我该怎么办?
答案 0 :(得分:2)
ó
是ó
我的猜测是您的JSON序列化程序正在转换为UTF-8。也许那可以输出ISO-8859-1? (见What is the difference between UTF-8 and ISO-8859-1?)
如果您通过Set-Cookie
HTTP标头(与JavaScript相比)设置Cookie,则IE可能会处理与Chrome不同的情况。 (见HTTP header should use what character encoding?)
更新:关于使用US-ASCII,EricLaw的评论是正确的。我认为RFC 2047是最好的参考,它为US-ASCII以外的字符集引入了“编码字”。
但是,在此特定示例中,不使用编码字或%XX URL编码,此cookie值为JSON,因此我将使用JavaScript字符串转义序列(请参阅Special Characters (JavaScript)和Converting Unicode strings to escaped ascii string) 。 ó
是字符0xF3,因此请在JSON格式的cookie值中使用字符串'\u00F3'
。这允许任何客户端cookie读取,只是JSON.parse()的值。
的document.cookie
“ProcessArray = [{”ProcessID“:1,”Description“:”Adquisici \ u00F3n de Articulos “ ”路径“: ”internalprocess.aspx过程= 1“}]”