看板 java 關於我們 聯絡資訊
最近在看歐萊裡的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,它的轉換標準是依據什麼呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.37.2 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1423390244.A.22E.html
mozzan: Unicode就是可以表達所有的字,2 bytes的確就足夠 02/08 20:01
mozzan: 你說得幾百萬指的是UTF-8嗎?UTF-8用4 bytes是因為要彌補 02/08 20:02
mozzan: unicode在顯示ascii code也是用2 bytes的缺陷,他是可變長 02/08 20:03
mozzan: 度,不代表他真的使用到2的32次方的字元 02/08 20:04