一. Charset.defaultCharset()系统默认编码字符集介绍
说明
返回此 Java 虚拟机的默认 charset。默认 charset 在虚拟机启动时决定,通常根据语言环境和底层操作系统的 charset 来确定。
Charset.defaultCharset()是操作系统的编码,可以通过虚拟机启动时指定属性-Dfile.encoding=UTF-8,来更改Charset.defaultcharset().
Charset.defaultcharset()指的是jvm输入流、输出流默认使用的编码/解码方式。
规则
当我们需要指定编码格式,可以通过JVM参数在启动的时候进行设置-Dfile.encoding=XXX,从而不受操作系统和语言环境的影响.
获取默认编码格式的源码如下:
①当我们不手动设置JVM参数-Dfile.encoding时,系统默认字符集则取决于语言环境和底层操作系统(Windows的CMD下是GBK,Linux下则跟设置的语言环境有关)
②当我们手动设置JVM参数-Dfile.encoding=xxx,如果xxx是不支持的字符集,则默认使用’UTF-8’编码.
结论:
字符集默认是操作系统一致,如果指定了-Dfile.encoding=xxx,则以-D参数为准。
操作系统字符集的设置又分为相应的优先级,LC_ALL>LC_*>LANG,LC_ALL是最上级设定或者强制设定。
如果系统字符集没有设置,默认一般是POSTX,java中的默认字符集为file.encoding = ANSI_X3.4-1968,sun.jnu.encoding = ANSI_X3.4-1968