在中文操作系统中,使用javac HelloWorld来编译java源程序【记事本存储的java源程序默认为UTF-8(带ROM)编码】,默认编码为GBK【在未指定编码参数(encoding)的情况下】,故而在使用GBK编码来编译UTF-8(带ROM)编码的文件时,就会出现乱码。
具体乱码为:UTF-8(带ROM)编码的文件的文件头占三个字节的头信息,按照GBK中文占两个字节,英文占一个字节的特性来解码。
解决方案:
对于非GBK编码及其子集编码(GB2312)的源文件,为其指定编码参数。
编译时写作:javac -encoding "utf-8" HelloWorld.java,此时乱码中不会再出现中文。
但仍然存在乱码问题,这是因为javac编译器只能识别不带ROM的UTF-8编码,而使用记事本保存的源程序自带ROM。
想要去掉ROM,应该使用高集成度的开发工具,保存不带ROM的编码源程序,就不会出现乱码问题。
下面这个图片是我出现的乱码问题: