如何在Node(\ u00f6)中忽略UTF-8字符?

时间:2016-06-02 07:31:53

标签: javascript node.js encoding utf-8

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

Einstellungen l\u00f6schen

我尝试了iconvpunycodeJSON.parse的一系列不同组合,但它们都不能满足我的要求,即将这些字符串转换为正确的UTF8格式适用于JavaScript。无论我如何处理它,当我打印它们时,字符串总是有它们的UTF8转义序列。

请注意,如果存在任何差异,该文件是一个较长的文件,其中包含一些换行符等。

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

1 个答案:

答案 0 :(得分:2)

您必须将其解析为字符串文字,因此unicode代码由引擎解析,因此您必须在通过JSON.parse()运行它之前将其包装在引号中。

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

或者您搜索unicode代码并将其替换为您自己的

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