在dos的控制台运行和调试java代码可能会出现以下报错
E:\>javac ConstantDemo.java
ConstantDemo.java:18: 错误: 编码GBK的不可映射字符
//杈撳嚭瀛楃涓插父閲?
那么造成这种错误的原因是什么呢?
- java程序在编译的时候,需要使用JDK开发工具包中的 javac.exe 命令,而JDK开发工具包是国际版的,默认格式为 unicode 的编码格式。
- 我们在编译java程序时,在未指定源程序文件编码格式的情况下,JDK会优先获取操作系统的file.encodifng参数,然后jdk将java源程序从 file.encoding编码格式转化为java内部默认的unicode格式存放到内存中。
- 然后javac把转换后的unicode格式的文件进行编译成class类文件,此时.class 文件是 unicode编码的,暂放在内存中
- 之后,jdk以unicode编码将编译后的.class文件保存到操作系统中形成我们见到的.class文件。
这里出错的原因:我们的Java源代码文件中含有中文注释,文件采用了 utf-8的编码格式 ,导致在编译java源程序时报错,无法成功编译;
解决方案一:使用指定的编码格式进行编译
javac -encoding UTF-8 ConstantDemo.java
解决方案二:将源代码调整为合适的编码格式