在中文操作系统中,使用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的编码源程序,就不会出现乱码问题。
下面这个图片是我出现的乱码问题:

当使用GBK编码的javac编译器尝试编译UTF-8(带ROM)编码的Java源文件时,会出现乱码。解决方法是在编译时指定编码参数,如`javac -encoding utf-8 HelloWorld.java`。然而,如果源文件包含ROM信息,即使指定编码,仍可能产生乱码。为避免此问题,建议使用支持保存无ROM编码的高集成度开发工具,确保源文件以正确编码保存。
518

被折叠的 条评论
为什么被折叠?



