① java 用FileInputStream中read方法讀取文件出現亂碼
read方法讀取復的是位元組流(制每次讀取一個位元組),如果是中文,就是兩個位元組,就會出現亂碼的。
可以通過BufferedReader 流的形式進行流緩存,之後通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
System.out.println(str);//原樣輸出讀到的內容
};
備註: 流用完之後必須close掉,如上面的就應該是:bre.close(),否則bre流會一直存在,直到程序運行結束。
② 怎麼解決讀取txt文件讀取時中文亂碼問題
從SDCard保存的txt文件讀取中文到android系統中會出現亂碼問題,如何解決這個亂碼問題,網上有不少解答方法,譬如說利用String temp1 =EncodingUtils.getString(strLine.getBytes(),"GB2312"); 但並非對所有的情況都適用,解決亂碼問題首先要明白為什麼會亂碼。究其原因,是因為txt文件在win系統上保存時默認為ANSI格式,而android目前只支持UTF-8編碼,因此將txt文件的中文讀入android系統中會產生亂碼。也有人說直接將txt另存為UTF-8編碼格式來解決亂碼問題,但這種方法指標不治本,不能要求用戶手動去更改格式,客戶第一嘛。因此還是需要想辦法在程序中進行處理。 以下做了一些編碼格式的測試: 測試文本: 122.11196,29.90573,北侖固廢廠 測試代碼段: reader=new BufferedReader(new FileReader(filename)); strLine=reader.readLine() ; String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312"); String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8"); String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8"); 將文件存成 Unicode 格式 這種方式能得到非亂碼的中文顯示,但對於 utf-8 格式下取得的經緯度數字利用double lon = Double.parseDouble(lat); 報錯 NumberFormatException,原因可能是 parseDouble(lat)方法不能處理存成utf-8格式的帶標點小數。 將文件 存成 ANSI 格式 將代碼改為: reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename),"GB2312")); strLine=reader.readLine() ; String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312"); String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8"); String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8"); 即解決了中文亂碼問題,又解決了Double.parseDouble(lat)報錯問題。
③ java讀取文件亂碼
那是你選中的文件內容字元編碼與jvm預設的文件編碼不一致,如unix下jvm預設文件編碼一般為iso8859-1,而回你的文件內容可能使用了GBK,可使用如下答代碼:
FileInputStream fis = new FileInputStream(Abs);
InputStreamReader isr = new InputStreamReader(fis, "GBK"); //GBK替換成你文件內容使用的編碼
BufferedReader br = new BufferedReader(isr);
④ Java用BufferedReader讀取文件中時總是亂碼
@Test
publicvoidFileInput()throwsIOException{
Filef=newFile("io.txt");
FileInputStreamfip=newFileInputStream(f);
//構建InputStreamReader對象,編碼與寫入相同
InputStreamReaderreader=newInputStreamReader(fip,"UTF-8");
StringBufferstringBuffer=newStringBuffer();
while(reader.ready()){
//轉成內char加到StringBuffer對象中容
stringBuffer.append((char)reader.read());
}
System.out.println(stringBuffer.toString());
reader.close();
fip.close();
}
⑤ java 文件IO 讀取亂碼問題
原因:文件的字元集編碼與java程序運行環境的字元集編碼不一致。
解決方法:回
BufferedReader br=new BufferedReader(new FileReader(path+"/"+title));
修改為答
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("path+"/"+title"),"UTF-8"));
UTF-8,更換為文件所用編碼
⑥ 如何解決FileReader讀文件亂碼的問題
你好,問題來出在FileReader讀取文件的自過程中,FileReader繼承了InputStreamReader,但並沒有實現父類中帶字元集參數的構造函數,所以FileReader只能按系統默認的字元集來解碼,然後在UTF-8 -> GBK -> UTF-8的過程中編碼出現損失,造成結果不能還原最初的字元。
原因明確了,這個問題解決起來並不困難,用InputStreamReader代替FileReader,InputStreamReader isr=new InputStreamReader(new FileInputStream(fileName),"UTF-8");這樣讀取文件就會直接用UTF-8解碼,不用再做編碼轉換。
⑦ java FileReader/FileWriter 讀寫字母和數字沒問題,但讀寫漢字就亂碼了.下面可以怎樣改呢
兄弟你的代碼在我這里運行沒有問題
⑧ 怎麼解決讀取txt文件讀取時中文亂碼問題
以下做了一些編碼格式的測試:
測試文本: 122.11196,29.90573,北侖固廢廠 測試代碼段:
reader=new BufferedReader(new FileReader(filename));
strLine=reader.readLine() ;
String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312");
String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8");
String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8");
將文件存成 Unicode 格式
這種方式能得到非亂碼的中文顯示,但對於 utf-8 格式下取得的經緯度數字利用double lon = Double.parseDouble(lat); 報錯 NumberFormatException,原因可能是 parseDouble(lat)方法不能處理存成utf-8格式的帶標點小數。 將文件 存成 ANSI 格式
將代碼改為:
reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename),"GB2312"));
strLine=reader.readLine() ;
String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312");
String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8");
String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8");
即解決了中文亂碼問題,又解決了Double.parseDouble(lat)報錯問題。
⑨ java 用readline()讀取帶有漢字的文本文檔,怎樣才能做到不亂碼
這個要根據文檔的編碼來處理,可以用read(bytes); new String(bytes, "gbk"); // 或其它編碼ucs2,utf8之類的。
⑩ java,為什麼讀取文本文件裡面的漢字是亂碼啊,怎麼改啊
漢字的字元集抄不匹配,比如說用UTF-8字元集去解析GBK字元集的漢字就會變成亂碼
這里不要用FileReader,這個類用的是默認字元集去讀取文本,改用InputStreamReader,它的構造方法中能夠指定字元集,讓它作為BufferedReader的源,就不會亂碼了
hcl=new BufferedReader(new InputStreamReader(new FileInputStream(wjlj
), "GBK"));
如果還是亂碼,就把GBK改成UTF-8