Java文件讀取亂碼的解決辦法

Java文件讀取亂碼的解決辦法

使用java讀取磁盤文件內容容易出現亂碼, 問題是由於java使用的編碼和被讀取文件的編碼不一致導致的。

java平臺默認編碼爲UTF-8
可使用

System.out.println(Charset.defaultCharset());

打印查看


假設有一個test.txt的文本文件,文件內容爲:“測試java讀取中文字符串亂碼問題”, 其中包含中文,文件的編碼格式爲GBK。 假如我們使用的java平臺默認編碼爲UTF-8,我們要改成GBK

然而, Java IO 系統Reader系列中的FileReader是沒有辦法指定編碼的,而FileReader的父類InputStreamReader可以指定編碼,所以我們可以使用它來解決亂碼問題

//	File file1 = new File("D:\\data.txt");
FileInputStream file1 = new FileInputStream("D:\\data.txt");
//  FileReader fr = new FileReader(file1);
InputStreamReader fr = new InputStreamReader(file1, "GBK");
 
BufferedReader br = new BufferedReader(fr);
while((str = br.readLine())!=null)
{
	System.out.println(str);
}

使用InputStreamReader代替FileReader,並在構造函數中指定以GBK編碼讀取FileInputStream中的內容, 便能打印正確的結果



以上內容對於完成作業已經夠用了,

當然,除了此解決方案以外, 我們也可以使用Java IO系統中的InputStream系列類解決問題。 InputStream和Reader是Java IO系統中用來讀取內容的兩個分支,InputStream面向的是字節流,Reader面向的是字符, 字符存在編碼問題,而字節流卻不存在編碼問題, 不過在最終將字節流轉換成字符顯示時還是涉及到編碼問題的。 具體的用InputStream讀取文件內容的解決方案,請看原作者。

鏈接: 簡書:陳大俠 Java文件讀取亂碼問題解決.
真正徹底避免亂碼的辦法是我們一定要確定被讀取文件的編碼格式和java平臺的編碼格式一致.(詳見上方鏈接)

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