JSON.stringify和unicode字符

ind*_*riq 8 javascript json

我必须将像ü这样的字符作为unicode字符发送到服务器,但作为字符串.所以它必须是\u00fc(6个字符)而不是角色本身.但是,无论我用它做什么,JSON.stringify它总是得到ü.

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

有什么办法要避免这个吗?这很烦人.

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

geo*_*org 23

如果由于某种原因,您希望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));
Run Code Online (Sandbox Code Playgroud)


Dan*_*van 1

这应该会让你到达你想要的地方。我很大程度上基于这个问题:Javascript, conversion unicode string to Javascript escape?

\n\n
var obj = {"key":"\xc3\xbc"};\nvar str1 = JSON.stringify(obj);\nvar str2 = "";\nvar chr = "";\nfor(var i = 0; i < str1.length; i++){\n    if (str1[i].match(/[^\\x00-\\x7F]/)){\n        chr = "\\\\u" + ("000" + str1[i].charCodeAt(0).toString(16)).substr(-4);\n    }else{\n        chr = str1[i];\n    }\n    str2 = str2 + chr;\n}  \nconsole.log(str2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n