1. ホーム
  2. java

[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?

2022-01-30 07:31:58

質問

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次のエンコーディングを試してみてください。