1. 程式人生 > >js和java中字元和unicode編碼的轉化

js和java中字元和unicode編碼的轉化

一般來說,良好的程式設計習慣要求在程式碼裡儘量不出現中文,一個是國際化問題,即同一份程式碼可能要滿足不同語言的顯示,還一個就是可能產生亂碼問題,不同的程式設計師用不同的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");