2

私たちは次のことを行っています:

  1. 指定されたエンコーディングを使用して、ファイルのリーダーを開きます。
  2. 各行を読み取り、CSVとして解析します。
  3. 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には、数値文字参照などの「ソースエンコーディング」を指定する必要があります。

4

1 に答える 1

0

前に次の電話をかけてみてくださいtext()

document.outputSettings().charset("windows-1252");

その他の出力設定については、javadocを参照してください。

于 2012-10-04T09:52:35.177 に答える