[問題] InputStreamReader的read()

作者: OoShiunoO (機機勳)   2015-02-08 18:10:41
最近在看歐萊裡的JAVA網路程式設計
裡面有講到這段code:
InputStreamReader r = new InputStreamReader(in, "MacCyrillic");
StringBuilder sb = new StringBuilder();
int c;
while((c=r.read()) != -1) sb.append((char) c);
return sb.toString();
他是讀取某個輸入串流in,並以MacCyrillic編碼轉換為unicode字串輸出。
其中read()會回傳0~65535的int,這代表Unicode字元,
我的問題是為什麼只會回傳0~65535而已?Unicode編碼不是有好幾百萬個嗎?
另外,(char)這個強制轉型是把int轉成char,它的轉換標準是依據什麼呢?
作者: mozzan (mozzan)   2015-02-08 20:01:00
Unicode就是可以表達所有的字,2 bytes的確就足夠你說得幾百萬指的是UTF-8嗎?UTF-8用4 bytes是因為要彌補unicode在顯示ascii code也是用2 bytes的缺陷,他是可變長度,不代表他真的使用到2的32次方的字元

Links booklink

Contact Us: admin [ a t ] ucptt.com