
𣡕
但是事實並不是那么簡單,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只能表示utf16中的bmp部分字符。對於CJK(中日韓統一表意文字)部分擴展字符集則無法表示。
例如,下圖中除Ext-A部分,char均無法表示。

