Javascript将Var转换为UTF8字符串

时间:2017-10-25 14:29:55

标签: javascript string utf-8 ecmascript-6

我遇到了一种奇怪的情况,我似乎无法解决这个问题。 我有一个包含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字符,请...

1 个答案:

答案 0 :(得分:3)

由于这些转义序列乍一看是有效的JSON转义序列,最简单的方法是将字符串解析为JSON字符串:



var x = "\\u0123";
console.log(JSON.parse('"' + x + '"'));