在某次处理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: 65535
int:-1,->char: ,char->byte:-1 ,char->int: 65535