我正在用Java创建一个简单的单词计数程序,该程序可以读取目录中基于文本的文件。

但是,我不断收到错误:

java.nio.charset.MalformedInputException: Input length = 1

从这行代码:
BufferedReader reader = Files.newBufferedReader(file,Charset.forName("UTF-8"));

我知道可能是因为我使用的Charset在文本文件中不包含某些字符,其中一些包含其他语言的字符。但我想包括那些字符。

后来我在JavaDocs上了解到Charset是可选的,仅用于更有效地读取文件,因此我将代码更改为:
BufferedReader reader = Files.newBufferedReader(file);

但是某些文件仍然抛出MalformedInputException。我不知道为什么

我想知道是否有一个包含所有内容的Charset,它将允许我阅读带有许多不同类型字符的文本文件吗?

谢谢。

最佳答案

您可能需要一个受支持的编码列表。对于每个文件,依次尝试每种编码,可能以UTF-8开头。每次您捕获MalformedInputException时,请尝试下一种编码。

10-07 19:25
查看更多