導航:首頁 > 文件教程 > filereader讀取文件亂碼

filereader讀取文件亂碼

發布時間:2020-12-30 22:52:48

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

閱讀全文

與filereader讀取文件亂碼相關的資料

熱點內容
網路中常用的傳輸介質 瀏覽:518
文件如何使用 瀏覽:322
同步推密碼找回 瀏覽:865
樂高怎麼才能用電腦編程序 瀏覽:65
本機qq文件為什麼找不到 瀏覽:264
安卓qq空間免升級 瀏覽:490
linux如何刪除模塊驅動程序 瀏覽:193
at89c51c程序 瀏覽:329
怎麼創建word大綱文件 瀏覽:622
裊裊朗誦文件生成器 瀏覽:626
1054件文件是多少gb 瀏覽:371
高州禁養區內能養豬多少頭的文件 瀏覽:927
win8ico文件 瀏覽:949
仁和數控怎麼編程 瀏覽:381
項目文件夾圖片 瀏覽:87
怎麼在東芝電視安裝app 瀏覽:954
plc顯示數字怎麼編程 瀏覽:439
如何辨別假網站 瀏覽:711
寬頻用別人的賬號密碼 瀏覽:556
新app如何佔有市場 瀏覽:42

友情鏈接