一. 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