当前位置: 代码迷 >> J2SE >> 让人吐血的Eclipse控制台编码有关问题!
  详细解决方案

让人吐血的Eclipse控制台编码有关问题!

热度:6852   发布时间:2013-02-25 00:00:00.0
让人吐血的Eclipse控制台编码问题!!!
求救赎~~

先看代码:
Java code
import java.io.IOException;public class Chinese {    public static void main(String[] args) throws IOException {        System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));                System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));                System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));                System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));                System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));                System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));        System.out.println(Integer.toHexString(System.in.read()));    }}


在Eclipse控制台输入“中国”(UTF-8:bf e4 b8 ad e5 9b bd,¿ä¸­å?½),竟然输出了这样的结果:
Java code
c3a4c2b8c2adc3a5e280bac2bdda


目测,是将“中国”二字的UTF-8字节码(¿ä¸­å?½,e4 b8 ad e5 9b bd),再进行了一次UTF-8编码(¿ä¸­åâ?ºÂ½,c2 bf c3 a4 c2 b8 c2 ad c3 a5 e2 80 ba c2 bd)。

谁能告诉我这是为什么以及怎么解决吗?(PS:Eclipse workspace 编码 UTF-8)





------解决方案--------------------------------------------------------
没道理十六进制数会是乱码啊。应该是0~F之间的字符才对。楼主自己写个字节向十六进制转换的转换函数吧。

PS:控制台编码,设置的貌似是输出编码,至于输入编码,貌似是系统默认编码,一般是GB2312。
  相关解决方案