來源:http://blog.csdn.net/u013476542/article/details/52958858
在java中,一切存儲(chǔ)在硬盤上的數(shù)據(jù)都是二進(jìn)制的字節(jié),當(dāng)我們從硬盤讀取到字節(jié)數(shù)組后,如果我們需要把字節(jié) 數(shù)組轉(zhuǎn)化成String類型的字符串,字節(jié)數(shù)組需要遵守一定的規(guī)則才能正確的轉(zhuǎn)化為字符串,這就用到了編碼 :charset。byte[] b ;1 String str =new String(b); 2String str =new String(b ,encoding); 第一種字節(jié)數(shù)組轉(zhuǎn)字符串的方法雖然沒有指明編碼方式,內(nèi)部使用了默認(rèn)編碼方式。 另一種情況:讀取字節(jié)流的時(shí)候,一般需要轉(zhuǎn)化成 字符串,也涉及到編碼問題。一般文件是用啥 編碼 存的,取的時(shí)候就用 此編碼讀取。 在寫讀的時(shí)候,一般建議指定編碼。BufferedReader br = new BufferedReader(new InputStreamReader(is));最好寫成BufferedReader br = new BufferedReader(new InputStreamReader(is,encoding));encoding一般需要猜測(cè)文件的編碼。嘿嘿。。。。問題來了,Charset.defaultCharset()由什么決定的呢?1、如果使用了eclipse,由java文件的編碼決定2、如果沒有使用eclipse,則有本地電腦語言環(huán)境決定,中國(guó)的都是默認(rèn)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); } } 上面是我寫的一個(gè)測(cè)試?yán)樱?、通過eclipse 右鍵 run as =》java application 測(cè)試 為UTF-82、通過cmd命令行運(yùn)行,結(jié)果為GBK通過右鍵 該java文件 =》properties 在resourse里可以看到我的文件編碼為UTF-8改變Charset.defaultCharset():
windows環(huán)境,直接修改jdk編碼在系統(tǒng)變量→新建 “JAVA_TOOL_OPTIONS” 變量,值為“-Dfile.encoding=UTF-8”
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注