IE中的特殊字符

时间:2013-05-17 22:45:14

标签: c# javascript asp.net internet-explorer cookies

我正在使用类似这样的服务器在服务器中保存一个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“}]”

我该怎么办?

1 个答案:

答案 0 :(得分:2)

óó

的UTF-8编码版本

我的猜测是您的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“}]”