我必须将ü等字符作为unicode字符发送到服务器,但作为字符串。所以它必须是\u00fc
(6个字符)而不是字符本身。但在JSON.stringify
之后,无论我用它做了什么,它总是得到ü。
如果我使用\\u00fc
之类的2个反斜杠,那么我在JSON
字符串中也会得到2,这也不好。
要避免这种伎俩吗?这很烦人。
好吧,我忘记了:我无法在JSON.strinfigy之后修改字符串,它是框架的一部分,没有解决方法,我们不想分叉整个包。
答案 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;
答案 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评论。