java的預設編碼

來源:互聯網
上載者:User

標籤:使用   public   default   char   pos   開發   eclipse   cal   運行時   

java的預設編碼

比如String.getBytes()就調用的預設編碼,流程如下:

會先擷取預設編碼:String csn = Charset.defaultCharset().name();

如果預設編碼有異常則使用:"ISO-8859-1"

那麼預設編碼如何擷取?看了下源碼如下

The default charset is determined during virtual-machine startup and typically depends upon the locale and charset of the underlying operating system.

預設字元集是在虛擬機器啟動期間確定的,通常取決於底層作業系統的地區設定和字元集。

public static Charset defaultCharset() {
if (defaultCharset == null) {
synchronized (Charset.class) {
String csn = AccessController.doPrivileged(new GetPropertyAction("file.encoding"));//系統屬性file.encoding設定的編碼
Charset cs = lookup(csn);
if (cs != null)
defaultCharset = cs;
else
defaultCharset = forName("UTF-8");//得不到系統設定的編碼則用UTF-8
}
}
return defaultCharset;
}

 

file.encoding 設定(運行時可設定):
在命令列中輸入 java,在給出的提示中會出現 -D 的說明:
-D= # set a system property
-D後面需要跟一個索引值對,作用是設定一項系統屬性
對 -Dfile.encoding=UTF-8 來說就是設定系統屬性 file.encoding 為 UTF-8
其實就是檔案的編碼

 

java預設編碼理解總結

先看file.encoding設定的編碼(eclipse運行時候,為了不亂碼會以檔案編碼運行)

如果沒有設定的編碼則用"UTF-8"

如果設定的編碼不可用則用"ISO-8859-1"

 

注意點:

我們的電腦系統一般都是預設的GBK編碼,如果cmd命令編譯預設都用GBK。

編譯編碼(編譯用編碼和檔案編碼一致,不然會編譯不通過,我猜可能是為了防止編譯亂碼):javac -encoding UTF-8 Test.java

運行編碼(也就是defaultCharset,java會程式用的預設編碼)java -Dfile.encoding=utf-8 Test

編譯編碼和運行編碼之間沒有必要聯絡。編譯編碼(必須和檔案一致,保證檔案的正確編譯),執行編碼(為java程式(JRE)設定預設編碼)。這也是為什麼jar包裡的class代碼無論在什麼編碼下都可執行

在使用eclipse混合檔案編碼時也可編譯執行,原因:個人認為eclipse等開發環境會預設使用檔案編碼格式編譯,檔案(程式入庫的檔案)編碼格式運行(因為啟動並執行是main()方法,main()可以多個,但程式入口就一個)

在伺服器上運行時,不會和eclipse一樣自動化佈建,固最好配置執行編碼

java的預設編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.