私たちは次のことを行っています:
- 指定されたエンコーディングを使用して、ファイルのリーダーを開きます。
- 各行を読み取り、CSVとして解析します。
CSVデータの一部の列については、以下のようにJSoupに渡してHTMLをクリーンアップします。
public String apply(@Nullable String input) { Document document = Jsoup.parse(input); return document.text(); }
これは、などの数字参照が存在する場合を除いて、うまく機能し 
ます。起こっているように見えるのは、エンコードを理解した後(CSV解析を機能させるため)、必ずJSoup呼び出しを実行する必要があるため、JSoupがハードコードされたバイトを文字に変換するようになったときに、作業を行っているということです。間違った文字セットで。バイト160(0xa0)は、windows-1252ではノーブレークスペースですが、有効なUnicode文字ではないため、JSoupが数値文字参照をバイトに置き換えているときにデータが不良になります。
これを回避する方法はありますか?JSoupには、数値文字参照などの「ソースエンコーディング」を指定する必要があります。