好的,我正在通过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);
我得到的结果是: 如果字符是英文的,它可以正常工作。但就我而言,他们不是。我怎样才能解决这个问题?非常感谢
答案 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。)