1. 程式人生 > >有關Java字符集編碼的問題

有關Java字符集編碼的問題

res bytes ava 數組 國際 java虛擬機 字符 bundle 數據

在Java語言中,下列關於字符集編碼(Character set encoding)和國際化(i18n)的問題,哪些是正確的?

  A.每個中文字符占用2個字節,每個英文字符占用1個字節

  B.假設數據庫中的字符是以GBK編碼的,那麽顯示數據庫數據的網頁也必須是GBK編碼的。

  C.Java的char類型,通常以UTF-16 Big Endian的方式保存一個字符。

  D.實現國際化應用常用的手段是利用ResourceBundle類

答案:CD

解析:

A 顯然是錯誤的,Java一律采用Unicode編碼方式,每個字符無論中文還是英文字符都占用2個字節。 Java的class文件編碼為UTF-8,而虛擬機JVM編碼為UTF-16 UTF-8編碼下,一個中文占3個字節,一個英文占1個字節 B 也是不正確的,不同的編碼之間是可以轉換的,通常流程如下: 將字符串S以其自身編碼方式分解為字節數組,再將字節數組以你想要輸出的編碼方式重新編碼為字符串。 例:String newUTF8Str = new String(oldGBKStr.getBytes("GBK"), "UTF8"); C 是正確的。Java虛擬機中通常使用UTF-16的方式保存一個字符 D 也是正確的。ResourceBundle能夠依據Local的不同,選擇性的讀取與Local對應後綴的properties文件,以達到國際化的目的。 綜上所述,答案是 C 和 D。

有關Java字符集編碼的問題