[問題] InputStreamReader的read()

看板java作者 (機機勳)時間10年前 (2015/02/08 18:10), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串1/2 (看更多)
最近在看歐萊裡的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

02/08 20:01, , 1F
Unicode就是可以表達所有的字,2 bytes的確就足夠
02/08 20:01, 1F

02/08 20:02, , 2F
你說得幾百萬指的是UTF-8嗎?UTF-8用4 bytes是因為要彌補
02/08 20:02, 2F

02/08 20:03, , 3F
unicode在顯示ascii code也是用2 bytes的缺陷,他是可變長
02/08 20:03, 3F

02/08 20:04, , 4F
度,不代表他真的使用到2的32次方的字元
02/08 20:04, 4F
文章代碼(AID): #1KrpOa8k (java)
討論串 (同標題文章)
文章代碼(AID): #1KrpOa8k (java)