我從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