Android:如何读取包含中文字符的txt文件?

时间:2010-06-01 16:38:22

标签: android file cjk

我有一个包含许多中文字符的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”,行);和System.out.println(“这里是一些中文字符这是一些中文字”)不正确显示字符,我甚至无法在println()方法中看到中文字符。 我该怎么做才能解决这个问题?有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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;

}