Phanio

错误: CMD 编译 Java 源文件时出现的编码 GBK 的不可映射字符的错误。

办法:使用 javac -encoding UTF-8 .java 指定编码形式。

原因:由于 JDK 是国际版的,在编译的时候,如果我们没有用 -encoding 参数指定 JAVA 源程序的编码格式,则 java.exe 首先获得我们才做系统默认采用的编码格式,也即在编译 JAVA 程序时,若我们不指定源程序文件的编码格式,JDK 首先获得操作系统的 file.encoding 参数(它保存的就是操作系统默认的编码格式,如 win2k,他的值为 GBK),然后 JDK 就把我们的 JAVA 源程序从 file.encoding 编码格式转化为 JAVA 内部默认的 UNICODE 格式放到内存中。之后,javac 把转换后的 UNICODE 格式的文件进行编译成 class 类文件,此时 .class 文件是 UNICODE 编码的,它暂放在内存中,紧接着,JDK 将此以 UNICODE 编码编译后的 .class 文件保存到操作系统中形成我们见到的 .class 文件。但我们不加设置就编译时,相当于使用了参数: javac -encoding gbk xx.java,就会出现不兼容的情况。