import java.io.IOException;
public class MyTest {public static void main(String[] args) throws IOException {
int b=System.in.read();
System.out.println(b);
}
}
输入:中
输出:214
问题:为什么输出为214 ,我知道"中"的unicode 编码为"4e2d",按照字节流中read()方法应该是读入一个字节"4e",这样b的转化为十进制应该为78,然而输出结果为214?请问其中问题出在哪?

解决方案 »

  1.   

    因为你的操作系统用的不是Unicode吧
    如果是windows用的是ASCII为解决Unicode和本地操作系统使用字符码转换的问题
    java引入了一个InputStreamReader类
    建议楼主看一下
      

  2.   

    答:问题出在:你用字节流读取的不是"中"的unicode 编码,而"中"的GBK 编码(WINDOW平台默认是GBK,若你是LINUX平台,则读取的又是]"中"的UTF-8的编码),而]"中"的GBK 编码是D6D0,你可知:D6 就是 214 .
      

  3.   

    和终端使用的编码有关。Windows下,输出214是正常的,因为“中”的GBK编码是两个负数-42 -48,214转换为byte就是编码的第一个字节-42。