Java class 编码

Java class 编码

Java是一种跨平台的语言,这注定了JVM能适应各类平台的编码环境。当今只有UNICODE能包含各类文字,而UTF-8编码能解决大小端问题,**因此Java的class是采用UTF-8格式存储字符串的。**虽然JVM内部采用UTF-16编码表示字符串。java

javac

咱们知道,java文件能够是各类编码,如GBK,UTF-8等等,可是经过javac编译后,产生的class文件都是UTF-8编码的。编码

ANSI

能够发现,该Java文件是采用ASNI编码(GBK)的。咱们经过javac Main.java编译,获取到class文件字符串

UTF-8 class查看

经过使用UTF-8编码查看,就能够发现“中文”了。再使用javap -verbose Main.class 查看:console

javap

能够发现字符编码就是UTF-8编码。字符编码

值得注意的是,javac 有一个参数** -encoing ,这个参数指定了java文件是什么编码格式的,若是不指定则会采用系统默认编码格式,如GBK**。编译

console

在控制台中,咱们能够看到中文的输出,class

中文输出

可是,咱们知道JVM中字符串是采用UTF-16编码的,console编码是系统默认编码GBK。能够推断,JVM调用println的时候,会把UTF-16的JVM编码字符串转换为系统默认编码GBK,使得输出中文结果能正确。im

相关文章
相关标签/搜索