如何纠正IE8原生json中的字符编码?

mik*_*kel 7 javascript unicode encoding internet-explorer json

我正在使用带有unicode文本的json,并且我遇到了IE8本机json实现的问题.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<script>
    var stringified = JSON.stringify("?????? olé");
    alert(stringified);
</script>
Run Code Online (Sandbox Code Playgroud)

使用json2.js或FireFox本机json,alert()字符串与原始字符串相同.另一方面,IE8返回Unicode值而不是原始文本\u0e2a\u0e27\u0e31\u0e2a\u0e14\u0e35 ol\u00e9.是否有一种简单的方法可以使IE的行为与其他行为相同,或者将此字符串转换为应该如何?你会认为这是IE中的一个错误,我认为原生json实现应该是json2.js的相同替代品吗?

编辑:使用上面的代码重写jsfiddle - http://jsfiddle.net/vV4uz/

mik*_*kel 7

回答我自己的问题 - 显然这在IE8中本身不可能,但它在IE9 Beta中可以正常工作.

一个修复是可能的,但:

<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>
Run Code Online (Sandbox Code Playgroud)

这将正确警告()返回所有IE,FF和Chrome上的原始字符串.