JSON.stringify和unicode字符

时间:2015-07-27 09:23:26

标签: javascript json

我必须将ü等字符作为unicode字符发送到服务器,但作为字符串。所以它必须是\u00fc(6个字符)而不是字符本身。但在JSON.stringify之后,无论我用它做了什么,它总是得到ü

如果我使用\\u00fc之类的2个反斜杠,那么我在JSON字符串中也会得到2,这也不好。

要避免这种伎俩吗?这很烦人。

好吧,我忘记了:我无法在JSON.strinfigy之后修改字符串,它是框架的一部分,没有解决方法,我们不想分叉整个包。

2 个答案:

答案 0 :(得分:21)

如果由于某种原因,您希望JSON是ASCII安全的,请在json编码后替换非ascii字符:



var obj = {"key":"füßchen", "some": [1,2,3]}

var json = JSON.stringify(obj)
json  = json.replace(/[\u007F-\uFFFF]/g, function(chr) {
    return "\\u" + ("0000" + chr.charCodeAt(0).toString(16)).substr(-4)
})

document.write(json);
document.write("<br>");
document.write(JSON.parse(json));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这可以让你到达你想要的地方。我在这个问题上基于这个问题:Javascript, convert unicode string to Javascript escape?

var obj = {"key":"ü"};
var str1 = JSON.stringify(obj);
var str2 = "";
var chr = "";
for(var i = 0; i < str1.length; i++){
    if (str1[i].match(/[^\x00-\x7F]/)){
        chr = "\\u" + ("000" + str1[i].charCodeAt(0).toString(16)).substr(-4);
    }else{
        chr = str1[i];
    }
    str2 = str2 + chr;
}  
console.log(str2)

我建议您查看有关解析此服务器端的@ t.niese评论。