2010-06-01 123 views
1

我有一個包含許多中文字符的txt文件,而txt文件位於res/raw/test.txt目錄中。我想閱讀文件,但不知何故,我不能讓中文字符正確顯示。這裏是我的代碼:Android:如何讀取包含中文字符的txt文件?

try { 
    InputStream inputstream = getResources().openRawResource(R.raw.test); 
    BufferedReader bReader = new BufferedReader(
     new InputStreamReader(inputstream,Charset.forName("UTF-8"))); 
    String line = null; 
    while ((line= bReader.readLine())!= null) { 
     Log.i("lolo", line); 
     System.out.println("here is some chinese character 這是一些中文字"); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Log.i(「lolo」,line);和System.out.println(「這裏是一些中文字符這是一些中文字」)不能正確顯示字符,我甚至不能在println()方法中看到中文字符。 我能做些什麼來解決這個問題?有誰能夠幫助我?

回答

2

爲了正確處理非ASCII字符(如UTF-8多字節字符),理解這些字符如何編碼和顯示很重要。

您的控制檯(輸出屏幕)可能不支持顯示非ASCII字符。如果是這樣的話,你的UTF-8字符將顯示爲垃圾。有時,您可以在控制檯上更改字符編碼。有時候不是。

即使控制檯正確顯示UTF-8字符,也有可能是您的字符串無法正確存儲中文字符。您可能認爲這是正確的,因爲您的編輯器顯示它們,但請確保編輯器的字符編碼也支持UTF-8。

+0

謝謝,我可以用你的答案解決這個問題 – TianDong 2010-06-06 12:43:01

1

我也試圖弄清楚。首先,您需要用記事本打開.txt文件,然後單擊FileSave as,您將看到一個表示Enconding的下拉菜單,因此將其更改爲UTF-8。保存文件後,您應該將.txt擴展名刪除到文件,然後將該文件添加到res/raw路徑,然後您可以從代碼中將其引用爲R.raw.txtFileName

就是這樣,我會把我的代碼放在我使用漢字的地方,然後我可以在模擬器中顯示它們。

如果您有任何其他問題,請讓我知道,因爲我也在開發與角色相關的東西。這裏是代碼:

public List<String> getWords() { 

    List<String> contents = new ArrayList<String>(); 
    try { 
     InputStream inputStream = getResources().openRawResource(R.raw.chardb); 
     BufferedReader input = new BufferedReader(new InputStreamReader(inputStream,Charset.forName("UTF-8"))); 
     try { 
      String line = null; 
      while ((line = input.readLine()) != null){ 
       contents.add(line); 
      } 
      } 
     finally { 
     input.close(); 
     } 
    } 
    catch (IOException ex){ 
     ex.printStackTrace(); 
    } 

    return contents; 

} 
相關問題