當前位置:編程學習大全網 - 源碼下載 - 怎麽解決讀取txt文件讀取時中文亂碼問題

怎麽解決讀取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)報錯問題。

  • 上一篇:請高手幫忙解釋下這多線程的源代碼,每句註釋下 #include <stdio.h> #include <stdlib.h>
  • 下一篇:開天眼是迷信還是真實案例?科學如何解釋?
  • copyright 2024編程學習大全網