如何在 Node (\u00f6) 中取消转义 UTF-8 字符?

Ric*_*ick 4 javascript encoding utf-8 node.js

我有一个使用 ISO 拉丁语编码的属性文件,但使用特殊字符作为 UTF-8 转义序列,例如以下字符串:

Einstellungen l\u00f6schen
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一堆不同的组合iconvpunycode并且JSON.parse又没有人做我需要它是将这些字符串转换为一个适当的UTF8格式与JavaScript的工作。无论我如何处理,当我打印它们时,字符串总是有它们的 UTF8 转义序列。

请注意,该文件是一个较长的文件,有一些换行符等,如果这有什么不同的话。

如何以打印正确字符的方式读取此文件?

Tho*_*mas 6

您要么必须将其解析为字符串文字,以便引擎解析 unicode 代码,因此您必须在通过 JSON.parse() 运行它之前将其用引号括起来。

JSON.parse('"' + str + '"');
//if you use " in your string, you would have to escape it
JSON.parse('"' + str.split('"').join('\\"') + '"');
Run Code Online (Sandbox Code Playgroud)

或者您搜索 unicode-codes 并自行替换它们

str.replace(/\\u([0-9a-fA-F]{4})/g, (m,cc)=>String.fromCharCode("0x"+cc));
Run Code Online (Sandbox Code Playgroud)