system.in.read()是如何读取中文的?

g495326 2017-05-29 07:48:41
public class ask1
{

public static void main(String[] args) throws IOException
{
int i;
System.out.println("start!");
while((i=System.in.read()) != -1)
{
System.out.println(i);
}
}
}



当输入英文时,输出还能理解,
怎么到了中文,就变成了图中所示的样子。

但无论是GBK或者UTF-8也不可能那么多字节吧?还请高人指点,感谢!
...全文
430 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱摸鱼de老邪 2017-05-29
  • 打赏
  • 举报
回复
你确定只输入了一个汉字字符?正常在Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。
qq_33606395 2017-05-29
  • 打赏
  • 举报
回复
首先,感觉你的打印有问题,所有的编码 都是基于ascii码,而ascii码的回车换行是10,13,但是你的'的'输出的没有.我将你的输出的数据进行回显(将数字组合成byte数组,再使用string的构造方法),使用了我已知的编码格式,回显的都是乱码. 建议,你重新测试一下"的",或者将输出的数据回显一下. 如果还是这样,请提交你项目的编码格式.

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧