我必须将像ü这样的字符作为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)
这应该会让你到达你想要的地方。我很大程度上基于这个问题:Javascript, conversion unicode string to Javascript escape?
\n\nvar 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)\nRun Code Online (Sandbox Code Playgroud)\n\n我建议您查看@t.niese 关于解析此服务器端的评论。
\n| 归档时间: |
|
| 查看次数: |
13023 次 |
| 最近记录: |