1

我有一个 txt 文件,其中包含许多中文字符,该 txt 文件位于 res/raw/test.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("here is some chinese character 这是一些中文字") 不能正确显示字符,我什至看不到 println() 方法中的汉字。我能做些什么来解决这个问题?有谁能够帮我?

4

2 回答 2

2

为了正确处理非 ASCII 字符,例如 UTF-8 多字节字符,了解这些字符的编码和显示方式非常重要。

您的控制台(输出屏幕)可能不支持显示非 ASCII 字符。如果是这种情况,您的 UTF-8 字符将显示为垃圾。有时,您将能够在控制台上更改字符编码。有时不是。

即使控制台正确显示了 UTF-8 字符,您的字符串也可能没有正确存储中文字符。您可能认为这是正确的,因为您的编辑器显示它们,但请确保您的编辑器的字符编码也支持 UTF-8。

于 2010-06-01T16:56:54.110 回答
1

我也试图弄清楚这一点。首先你需要.txt用记事本打开文件,然后点击File-> Save 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;

}
于 2011-05-20T06:24:23.207 回答