js和java中字元和unicode編碼的轉化
阿新 • • 發佈:2019-01-03
一般來說,良好的程式設計習慣要求在程式碼裡儘量不出現中文,一個是國際化問題,即同一份程式碼可能要滿足不同語言的顯示,還一個就是可能產生亂碼問題,不同的程式設計師用不同的IDE匯入這份程式碼可能使用了不同的預設編碼。
然而有些場景是必須保持中文的,比如讀取某個帶樣式文字的字型,這個字型的名字可能就叫“宋體”或者“微軟雅黑”,用國際化檔案的方式解決顯然是不合適的,這時候一個解決方法就是轉化Unicode碼。
字母a的unicode碼是10進位制的97,或者16進位制的61,
漢字一的unicode碼是19968,或者16進位制的4e00
JavaScript中,
獲取字元的unicode碼:
"a".charCodeAt(0) 返回97
"一".charCodeAt(0) 返回19968
把編碼轉化成字元:
String.fromCharCode(97); 返回"a" 或者直接用'\u0061'
String.fromCharCode(19968); 返回"一" 或者直接用"\u4e00"
Java中,
字元轉化成編碼:
強制轉換把char轉化成int
System.out.println((int)"一二三".charAt(0));列印19968
編碼轉化成字元:
強制轉換把int轉成char
System.out.println(((char)19968) + "" + ((char)97));列印"一a"
或者直接用"\u4e00\u0061" 結果為"一a"
注意獲取字串編碼的時候編碼如果不是utf8需要做編碼轉化,比如:
new String("一二三".getBytes(), "GBK");