通过javascript转换unicode字符

时间:2013-12-20 10:36:48

标签: javascript unicode

我从php脚本中检索了以下文本(其中一些是中文字符)作为选择选项,但无法将它们转换为可读字符(无论是通过php还是javascript),请提供建议。

\\xe8\\xac\\x9b\\xe5\\x91\\xa2D\\xe3\\x80\\x82

2 个答案:

答案 0 :(得分:3)

input = '\xe8\xac\x9b\xe5\x91\xa2D\xe3\x80\x82'
console.log(decodeURIComponent(escape(input)))

这准确地为您提供了

講呢D。

更新

如果您的字符串确实包含\x个字符,那么我们可以先将它们转换为%

input = '\\xe8\\xac\\x9b\\xe5\\x91\\xa2D\\xe3\\x80\\x82'

decodeURIComponent(input.replace(/\\x/g, '%'))

答案 1 :(得分:1)

虽然@punund's answer是正确的,但也可以手动将字节转换为UTF转换。

在Unicode字符映射中,中文字符占用00000800 - 0000FFFF范围内的3个字节,因此您的字节串应按3分组并转换为真实的UTF字符。

以下是一种可能的解决方案:

var str = '\\xe8\\xac\\x9b\\xe5\\x91\\xa2D\\xe3\\x80\\x82',
    result = str.replace(/(\\{1,2}x[0-9a-f]{2}){3}/g, function(c) {
        var u = eval('"' + c + '"');
        return String.fromCharCode(
             ((u.charCodeAt(0) & 15) << 12) |
             ((u.charCodeAt(1) & 63) << 6) |
              (u.charCodeAt(2) & 63));
    });

console.log(result);   // "講呢D。"
使用eval时,

N.B。:not recommended,在提供的示例中,它完全无害。