BufferedReader,在edittext中读取字符会产生奇怪的字符

时间:2014-07-10 18:42:14

标签: java bufferedreader

好的,我正在通过BufferedReader读取.docx文件,并希望将文本存储在edittext中。 .docx不是英语,而是另一个(希腊语)。我用:

File file = new File(file_Path);
try {
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line;
    StringBuilder text = new StringBuilder();
    while ((line = br.readLine()) != null) {
        text.append(line);
    }
et1.setText(text);

我得到的结果是:enter image description here 如果字符是英文的,它可以正常工作。但就我而言,他们不是。我怎样才能解决这个问题?非常感谢

1 个答案:

答案 0 :(得分:3)

  

好的,我正在通过BufferedReader

读取.docx文件

那是第一个问题。 BufferedReader用于纯文本文件。 docx文件是特定格式的二进制文件(假设您的意思是Microsoft Word保存的文件类型)。你不能像文本文件一样阅读它们。在记事本(不是写字板)中打开文件,你会看到我的意思。

您可能需要查看Apache POI

来自评论:

  

使用相同文本读取.txt文件的测试也给出了相同的结果

这可能是因为使用了错误的编码。 FileReader始终使用平台默认编码,这很烦人。假设您使用的是Java 7或更高版本,那么您最好使用Files.newBufferedReader

try (BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
    ...
}

调整字符集以匹配保存文本文件时使用的字符集,当然 - 如果您可以选择使用UTF-8,那么这是一个不错的选择。 (除了其他任何东西,几乎所有东西都可以处理UTF-8。)