Javascript 如何更正IE8本机json中的字符编码?

Javascript 如何更正IE8本机json中的字符编码?,javascript,json,internet-explorer,unicode,encoding,Javascript,Json,Internet Explorer,Unicode,Encoding,我将json与unicode文本一起使用,并且IE8原生json实现存在问题 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> var stringified = JSON.stringify("สวัสดี olé"); alert(stringified); </script> var stringified=JSON.str

我将json与unicode文本一起使用,并且IE8原生json实现存在问题

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<script>
    var stringified = JSON.stringify("สวัสดี olé");
    alert(stringified);
</script>

var stringified=JSON.stringify(“สวัสดี ",;
警惕(严格化);
使用json2.js或FireFox原生json时,
alert()
字符串与原始字符串相同。另一方面,IE8返回Unicode值,而不是原始文本
\u0e2a\u0e27\u0e31\u0e2a\u0e14\u0e35 ol\u00e9
。有没有一种简单的方法让IE像其他的一样工作,或者把这个字符串转换成它应该是什么样子?你会认为这是IE中的一个bug吗?我认为原生json实现应该是json2.js的替代品


编辑:使用上述代码在JSFIDLE上复制-

如果是在发送到服务器之前,可以先对其进行编码 encodeURIComponent(JSON.stringify(“สวัสดี ()
并在服务器上使用utf8解码器来回答我自己的问题-显然这在IE8中是不可能的,但在IE9测试版中确实可以正常工作

但也有可能:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<script>
    var stringified = JSON.stringify("สวัสดี olé");
    stringified  = unescape(stringified.replace(/\\u/g, '%u'));
    alert(stringified);
</script>

var stringified=JSON.stringify(“สวัสดี ",;
stringified=unescape(stringified.replace(/\\u/g,'%u'));
警惕(严格化);

这将正确地提醒()所有IE、FF和Chrome上的原始字符串。

确保服务器配置正确。我的回答是,即使是unicode JSON文件:

Content-Type: text/html; charset=ISO-8859-1
我认为regexp:

unescape(stringized.replace(/\u/g,'%u'))

他太咄咄逼人了。如果输入中有一个字符串“\u”不是UTF字符,它仍然会捕获它

我想你需要的是:

unescape(stringized.replace(/([^\\])\\u([0-9][0-9][0-9][0-9])/g,“$1%u$2”)


如果x是一个数字,并且整个序列不以反斜杠(\)进行,则只会更改\uxxx序列。

谢谢。如果需要,我不介意在服务器上进行解码,尽管这并不理想,因为这意味着服务器会根据使用的浏览器获得不同的值。然后我该如何“在服务器上对其进行UTF8解码”虽然(在C#)中,我还是有点迷茫。。。?我已经在发送到服务器时使用了encodeURIComponent,但这并没有真正改变问题。我不明白为什么您会根据浏览器获得不同的数据,IE和FF都支持EncodeuriComponent。传入的数据因浏览器而异(如原始问题中所述),因此输出也不同。encodeURIComponent只允许我将问题从客户端转移到服务器,但我仍在寻找一种方法,通过客户端上的Javascript或服务器上的C#来实际纠正问题。奇怪。我已经浏览了我的网站,IE 6-10的所有版本都受到了影响。这是Internet explorer中的一个明显错误:JSON应该被认为是unicode编码的,请参阅