java的默认编码是unicode,所有编译后的class文件都是以unicode格式保存的。

编译时,如果没指定编码格式,javac.exe使用操作系统默认的编码格式。jdk将默认编码转为unicode格式存储在内存中,然后,把转换后的unicode格式的文件编译成.class类文件,此时.class文件是unicode编码的,它暂放在内存中,紧接着,jdk将此以unicode编码的编译后的class文件保存到我们的操作系统中,形成我们见到的.class文件。

对我们来说,我们最终获得的.class文件是内容以unicode编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由默认格式转化为unicode格式了。

eclipse中,文件编码 >工程编码 > 全局设置的编码,编码影响2个地方:

  • 1、文件自身存储的编码格式。
  • 2、io读写文件的默认编码。

如,eclipse工程编码utf8,*.java文件、*.js文件就是以utf8格式存储的,直接拷贝到gbk工程下就会乱码。但是编译后的class文件是unicode编码。