2010-06-01 102 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; 

} 
相关问题