來源:http://blog.csdn.net/u013476542/article/details/52958858
在java中,一切存儲在硬盤上的數據都是二進制的字節,當我們從硬盤讀取到字節數組后,如果我們需要把字節 數組轉化成String類型的字符串,字節數組需要遵守一定的規則才能正確的轉化為字符串,這就用到了編碼 :charset。byte[] b ;1 String str =new String(b); 2String 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編碼[java] view plain copypackage 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-82、通過cmd命令行運行,結果為GBK通過右鍵 該java文件 =》properties 在resourse里可以看到我的文件編碼為UTF-8改變Charset.defaultCharset():
windows環境,直接修改jdk編碼在系統變量→新建 “JAVA_TOOL_OPTIONS” 變量,值為“-Dfile.encoding=UTF-8”
新聞熱點
疑難解答