reader read()==-1中文问题

来源:互联网 发布:中国建筑网络大学 编辑:程序博客网 时间:2024/04/29 11:41

在某次处理reader中,该流中含有中文字符,代码如下

Reader r = null;try{char c = (char) r.read();while ((byte) c == -1){// Do ...c = (char) r.read();}} catch (IOException e){e.printStackTrace();}

发现读不完整中文字符,原来是int->char的问题,正确处理应该如下

Reader r = null;try{int i =r.read();char c=(char)i;while (i == -1){// Do ...i =  r.read();c=(char)i;}} catch (IOException e){e.printStackTrace();}

测试代码

 int i=65535;// int i=-1; char c=(char)i; byte b=(byte)c; int i2=(int)c; System.out.println("int:"+i+",->char:"+c+" ,char->byte:"+b+" ,char->int: "+i2);

结果可以看到:

int:65535,->char:￿ ,char->byte:-1 ,char->int: 65535int:-1,->char:￿ ,char->byte:-1 ,char->int: 65535



原创粉丝点击