Javascript 解码 JSON 中的 unicode 反斜杠

Nir*_*iru 6 javascript unicode node.js

我有一个 JSON 对象,其字符串字段可能包含与以下内容匹配的转义 unicode 字符: '\\\\\\\\u'\n例如:

\n
     chars\\\\u2078\\\\u2078 -> chars\xe2\x9c\xa8\xe2\x9c\xa8\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试使用 Stringify 进行转换,并在替换 Node.Js 12 中的额外字符后重新解析:

\n
    let s = JSON.stringify(input);\n    console.log(JSON.stringify(input));\n    let r = new RegExp('\\\\\\\\\\\\\\\\', 'g');\n    let t = s.replace(r, '\\\\');\n    console.log(t);\n    let u = JSON.parse(t);\n    console.log(u); // -> {field: 'chars\xe2\x81\xb8'}\n
Run Code Online (Sandbox Code Playgroud)\n

手动尝试替换所有 unicode 字符也不起作用:

\n
    let s = 'chars\\\\\\\\u2078\\\\\\\\u2078';\n    console.log(s); //-> chars\\\\u2078\\\\u2078\n    let r = new RegExp('\\\\\\\\(u[0-9]{4})', 'g');\n    console.log(s,' ', s.replace(r, (a,b) => {return b})); //-> chars\\\\u2078\\\\u2078 chars\\u2028\\u2078\n
Run Code Online (Sandbox Code Playgroud)\n

有没有办法解码转义的 unicode 字符,以便显示实际的 unicode 值?

\n

cus*_*der 5

\\u2078不是 \xe2\x9c\xa8 的 unicode,而是 \xe2\x81\xb8 的 unicode。\\u2728是 \xe2\x9c\xa8 的 unicode。

\n

不确定到底是什么问题。这似乎工作正常:

\n

\r\n
\r\n
let input = \'chars\\\\u2728\\\\u2728\';\nconsole.log(input);\ninput = JSON.stringify(input);\nconsole.log(input);\ninput = input.replace(/\\\\\\\\/g, \'\\\\\');\nconsole.log(input);\ninput = JSON.parse(input);\nconsole.log(input);
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n