問題のファイルは私の管理下にありません。ほとんどのバイトシーケンスは有効なUTF-8であり、ISO-8859-1(または他のエンコーディング)ではありません。できるだけ多くの情報を抽出するように頑張りたいと思います。
ファイルにいくつかの不正なバイトシーケンスが含まれています。これらは置換文字に置き換える必要があります。
これは簡単な作業ではなく、UTF-8ステートマシンに関する知識が必要だと考えています。
Oracleには、必要な処理を実行するラッパーがあります
。UTF8ValidationFilterjavadoc
そのようなものが(商業的にまたは無料のソフトウェアとして)利用可能ですか?
ありがとう
-ステファン
解決:
final BufferedInputStream in = new BufferedInputStream(istream);
final CharsetDecoder charsetDecoder = StandardCharsets.UTF_8.newDecoder();
charsetDecoder.onMalformedInput(CodingErrorAction.REPLACE);
charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
final Reader inputReader = new InputStreamReader(in, charsetDecoder);