我試圖在javascript中將unicode字符串轉換爲十六進制表示形式。Javascript:將Unicode字符串轉換爲十六進制
這是我有:
function convertFromHex(hex) {
var hex = hex.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
function convertToHex(str) {
var hex = '';
for(var i=0;i<str.length;i++) {
hex += ''+str.charCodeAt(i).toString(16);
}
return hex;
}
但如果失敗的Unicode字符,如中國;
輸入: 漢字
輸出:?? ªo「[W
任何想法可以這樣用JavaScript來實現
謝謝,只是1個問題,但(可能是一個愚蠢的..) - 你如何從javascript中的漢字獲得\ u6f22 \ u5b57?最接近的是使用escape()函數,但它使用% - 我猜可以用一個正則表達式來替換%,但是escape()函數也被棄用了。 EncodeURI和encodeURIComponent都給出了不同的輸出。任何想法? – Wesley
''\ u6f22 \ u5b57「'是文字''漢字''的Unicode轉義形式,就像'\ n'是換行符一樣。我傾向於使用它們來避免歧義並避免字符編碼問題。有關詳細信息,請參見[規範](http://www.ecma-international.org/publications/standards/Ecma-262.htm)。要自己生成它們,將上面的'(「000」+ hex).slice(-4)'改爲'「\\ u」+(「000」+ hex).slice(-4)'。表達式「」\ u6f22 \ u5b57「===」漢字「'評估爲真,因爲在代碼解析後它們是相同的。 – McDowell
謝謝,我遇到過1個問題,有時是hex.match(//。{1,4}/g);不匹配任何東西。 (錯誤:null不是一個對象(評估hexes.length)) - 你知道可能是什麼原因嗎? – Wesley