String s = "中";
byte[] b = s.getBytes("UNICODE");
System.out.println(b.length);//如果用Unicode编码的话,这里长度为4,如果用gbk编码的话长度是2,这是为什么呢
for(int i = 0;i < b.length;i++){
System.out.write(b[i]);//如果用Unicode编码的话,显示的是乱码;如果用gbk编码的话显示正常的“中”,这又是为什么呢
}
System.out.println();
第二个问题:首先看你的本身的JAVA文件是用什么编码格式,如果你JAVA文件用的是GBK或者gb2312的话那么你用GBK输出就是“中”字了。如果用UNICODE的编码方式输出就是乱码了。
gbk 总共3个字母 3/2=1.5 需要 2个byte你开发环境和你用的编码要一致 不然会显示乱码额
默认eclipse 是gbk吧~ edit->set encoding...
第二个问题:你是想打印什么?如果你想打印“中”的话,应该是System.out.write(b);接异常
至于乱码的话,就要看你的本地OS是什么字符集,我的不会乱,GBK的。
那么要在控制台上输出Unicode编码的字符方法又是什么呢?