作者OoShiunoO (机机勳)
看板java
标题[问题] InputStreamReader的read()
时间Sun Feb 8 18:10:41 2015
最近在看欧莱里的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://webptt.com/cn.aspx?n=bbs/java/M.1423390244.A.22E.html
1F:推 mozzan: Unicode就是可以表达所有的字,2 bytes的确就足够 02/08 20:01
2F:→ mozzan: 你说得几百万指的是UTF-8吗?UTF-8用4 bytes是因为要弥补 02/08 20:02
3F:→ mozzan: unicode在显示ascii code也是用2 bytes的缺陷,他是可变长 02/08 20:03
4F:→ mozzan: 度,不代表他真的使用到2的32次方的字元 02/08 20:04