Java中的char 不能存所有的漢字


 

 𣡕

但是事實並不是那么簡單,Java的char內部編碼為UTF-16,請參考String編碼(二) 證明JAVA的char編碼為UTF-16

Java 的char用兩字節存儲,表示范圍從 '\u0000' 到 '\uffff' ,也就是從0到65535。事實上,一個 char不能表示65535個字符,因為只有U+0000 到 U+D7FF 和 U+E000 到U+FFFF能用來表示 一個完整的字符,這些叫做 BMP,另外的作為high surrogate和 low surrogate 拼接組成由4字節表 示的字符。

在UTF-16編碼中,大於U+10000碼位將被編碼為一對16比特長的碼元,即按4個字節編碼,此時char無法表示。utf16編碼格式

所以Java的char只能表示utf­16中的bmp部分字符。對於CJK(中日韓統一表意文字)部分擴展字符集則無法表示。

 例如,下圖中除Ext-A部分,char均無法表示。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM