中文字元轉十六進位制Unicode編碼原始碼例項

Web開發者發表於2016-05-29

1、知識準備

  str.charCodeAt()  返回字串中的第n個字元的程式碼;

  String.fromCharCode(27573)  返回指定Unicode編碼的字元;

  例:

var str="程式人生"; 

document.write(str.charCodeAt(0)+'<br/>');   //31243
document.write(str.charCodeAt(1)+'<br/>');   //24207 

document.write(String.fromCharCode(31243)+'<br/>');    //程
document.write(String.fromCharCode(24207)+'<br/>');    //序

2、把 中文字串 轉換為 十六進位制Unicode編碼

var toUnicode = function (s) { 
        var str = ""; 
        for (var i = 0; i < s.length; i++) { 
            str +="\\u"+s.charCodeAt(i).toString(16)+"\t"; 
        } 
        return str; 
    } 
    var a = '程式人生'; 
    document.write(toUnicode(a));    // \u7a0b   \u5e8f   \u4eba   \u751f

3、把 十六進位制Unicode編碼 轉換為 中文字串。

  因為"\u"會被轉義,所以字串裡要寫成\\u。

var toStr = function (n){ 
        var str = ""; 
        var s = n.split('\\u'); 
        for(var i = 0;i < s.length;i++){ 
            str += String.fromCharCode(parseInt(s[i],16))+"\t"; 
        } 
        return str; 
    } 

    var b = "\\u7a0b   \\u5e8f   \\u4eba   \\u751f"; 
    document.write(toStr(b));    // 程    序    人    生 

轉義字元"\"的妙用 

   大家可能對轉義字元""不太熟悉,但對於JavaScript提供了一些特殊字元如:\n (換行)、 \r (回車)、\’ (單引號 )等應該是有所瞭解的吧?

  其實"\"後面還可以跟八進位制或十六進位制的數字,如字元"a"則可以表示為:"\141"或"\x61"(注意是小寫字元"x"),至於雙位元組字元如漢字 "黑" 則僅能用十六進位制表示為"\u9ED1"(注意是小寫字元"u"),其中字元"u"表示是雙位元組字元,根據這個原理,下面例子中2行程式碼輸出完全一樣:        

 <script>
  alert('\x3c\x62\x3e\x77\x65\x62\u5f00\u53d1\u8005\x3c\x2f\x62\x3e');
  alert('\74\142\76\167\145\142\u5f00\u53d1\u8005\74\57\142\76');
 </script>

\u之後跟4位十六進位制數。取值範圍:\u0000 到 \uffff
\x之後跟2位十六進位制數。取值範圍:\x00 到 \xff

相關文章