我遇到了一种奇怪的情况,我似乎无法解决这个问题。 我有一个包含UTF8字符的字符串(转义)。我已经尝试过decodeURIComponent(escape(str))以及其他一些建议的修复程序,但还没有成功。
我已经编写了这个函数来获取字符串,找到转义的字符,然后用直接的UTF8替换它们。
var unescapeUTF8 = function(str) {
var matches = str.match(/\\u.{4}/g);
if (matches == null) return str;
for (var item of matches)
{
// testing
console.log(new String(item));
}
....
....
....
};
从测试开始,我知道如果我去new String("\u0123")
我会找回一个字符串对象String {0: "ģ", length: 1, [[PrimitiveValue]]: "ģ"}
似乎无论我对上述函数中的字符串做了什么,我都无法将其从转义\u0123
转换为ģ
我通过打开开发人员工具并运行以下
,设法在浏览器中“创建”此问题var x = "\\u0123";
console.log(x); // == "\u0123"
new String(x); // == String {0: "\", 1: "u", 2: "1", 3: "3", 4: "2", 5: "4", length: 6, [[PrimitiveValue]]: "\u1324"}
任何人都可以知道如何将“x”转换为UTF8字符,请...
答案 0 :(得分:3)
由于这些转义序列乍一看是有效的JSON转义序列,最简单的方法是将字符串解析为JSON字符串:
var x = "\\u0123";
console.log(JSON.parse('"' + x + '"'));