我从php脚本中检索了以下文本(其中一些是中文字符)作为选择选项,但无法将它们转换为可读字符(无论是通过php还是javascript),请提供建议。
\\xe8\\xac\\x9b\\xe5\\x91\\xa2D\\xe3\\x80\\x82
答案 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,在提供的示例中,它完全无害。