【发布时间】:2016-10-01 19:24:57
【问题描述】:
我有一个使用 ISO 拉丁文编码但使用特殊字符作为 UTF-8 转义序列的属性文件,例如以下字符串:
Einstellungen l\u00f6schen
我尝试了iconv、punycode 和JSON.parse 的一系列不同组合,但它们都没有做我需要的事情,即将这些字符串转换为适用于 JavaScript 的正确 UTF8 格式。不管我怎么做,当我打印它们时,字符串总是有它们的 UTF8 转义序列。
请注意,如果这有什么不同,该文件是一个较长的文件,带有一些换行符等。
如何以打印正确字符的方式读取此文件?
【问题讨论】:
-
仅供参考,JavaScript \u 转义序列与 UTF-8 无关。该数字是 unicode 代码点[reference]。
-
你试过
console.log("Einstellungen l\u00f6schen")=>Einstellungen löschen。 JavaScript 会自动为您进行转换。 -
JSON.parse('"' + str.split('"').join('\\"') + '"')或str.replace(/\\u([0-9a-fA-F]{4})/g, (m,cc)=>String.fromCharCode("0x" + cc)) -
是的,我也注意到了这一点,但无论出于何种原因,当从文件中解析字符串时它不起作用,这让我感到困惑。
-
@Thomas
str.replace(/\\u([0-9a-fA-F]{4})/g, (m,cc)=>String.fromCharCode("0x" + cc))成功了!随意发布它作为答案,我会尽快接受:)
标签: javascript node.js encoding utf-8