我从php脚本中检索了以下文本(其中一些是中文字符)作为选择选项,但无法将它们变为可读字符(无论是通过php还是javascript),请咨询。通过javascript转换Unicode字符
\\xe8\\xac\\x9b\\xe5\\x91\\xa2D\\xe3\\x80\\x82
我从php脚本中检索了以下文本(其中一些是中文字符)作为选择选项,但无法将它们变为可读字符(无论是通过php还是javascript),请咨询。通过javascript转换Unicode字符
\\xe8\\xac\\x9b\\xe5\\x91\\xa2D\\xe3\\x80\\x82
input = '\xe8\xac\x9b\xe5\x91\xa2D\xe3\x80\x82'
console.log(decodeURIComponent(escape(input)))
这给了你到底
講呢D。
UPDATE
如果字符串确实包含\x
字符,那么我们就可以将它们转换成%
第一个:
input = '\\xe8\\xac\\x9b\\xe5\\x91\\xa2D\\xe3\\x80\\x82'
decodeURIComponent(input.replace(/\\x/g, '%'))
我仍然无法正确理解,但可以通过浏览器的控制台看到正确的字符 http://www.imageupload.co.uk/images/2013/12/20/000.jpg – user2499325
我修改了我的答案。 – punund
万分感谢,终于,我明白了!感谢所有的答复! – user2499325
虽然@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。"
N.B .:同时使用eval
是not recommended,在所提供的实例是完全无害的。
感谢您的评论,我从线程学到了很多:) – user2499325
要做到这一点,首先必须知道角色所处的位置。上述内容似乎不是UTF-16(无论是LE还是BE;如果是的话,这会很简单)。所以这是第一件事。 –
你能告诉应该是什么结果? –
正确的字符串应该是“讲呢D.” – user2499325