中文亂碼與字符集

一. 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-1968sun.jnu.encoding = ANSI_X3.4-1968  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章