天天看點

Charset.defaultCharset()由什麼決定

      在java中,一切存儲在硬碟上的資料都是二進制的位元組,當我們從硬碟讀取到位元組數組後,如果我們需要把位元組     數組轉化成String類型的字元串, 位元組數組需要遵守一定的規則才能正确的轉化為字元串,這就用到了編碼 : charset。 byte[] b ; 1      String str =new String(b);         2 String str =new String(b ,encoding); 

第一種位元組數組轉字元串的方法雖然沒有指明編碼方式,内部使用了預設編碼方式。      另一種情況:讀取位元組流的時候,一般需要轉化成 字元串,也涉及到編碼問題。

一般檔案是用啥 編碼 存的,取的時候就用 此編碼讀取。 在寫讀的時候,一般建議指定編碼。 BufferedReader br = new BufferedReader(new InputStreamReader(is));最好寫成 BufferedReader br = new BufferedReader(new InputStreamReader(is,encoding)); encoding一般需要猜測檔案的編碼。嘿嘿。。。。

問題來了,Charset.defaultCharset()由什麼決定的呢? 1、如果使用了eclipse,由java檔案的編碼決定 2、如果沒有使用eclipse,則有本地電腦語言環境決定,中國的都是預設GBK編碼

package com.baobaotao;

import java.nio.charset.Charset;

public class test {
	 public static void main(String args[])  
	    {  
	        String defaultCharsetName=Charset.defaultCharset().displayName();   
	        System.out.println("defaultCharsetName:"+defaultCharsetName);  
	          
	    }  
}
           

上面是我寫的一個測試例子, 1、通過eclipse 右鍵   run as =》java application 測試 為UTF-8 2、通過cmd指令行運作,結果為GBK

通過右鍵 該java檔案 =》properties 在resourse裡可以看到我的檔案編碼為UTF-8

Charset.defaultCharset()由什麼決定