2

私は次のようなJSoupドキュメントを作成しています。

String user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/A.B     (KHTML, like Gecko) Chrome/X.Y.Z.W Safari/A.B.";
String url = "http://www.ncbi.nlm.nih.gov/pmc/articles/PMC24391/?tool=pubmed";
Document doc = return Jsoup.connect(url).userAgent(user_agent).get();

次に、を使用してファイルに保存するdoc.toString()と、保存されたファイルに文字が。に置き換えられているのがわかります?。たとえば、5 μmになり5 ?mます。

ISO-8859-1文字セットを使用するように出力設定を変更すると、問題ないようです。

誰かがこれがなぜであるか説明できますか?私の理解では、元のhtmlページはUTF-8であり、これはデフォルトのJsoupエンコーディングです。

4

1 に答える 1

3

私にとってはうまくいきます。あなたの問題は他の場所で発生しています。

最も可能性の高い原因は、UTF-8 を使用してファイルを保存しなかったことです。OutputStreamWriter指定した文字エンコーディングで文字をファイルに書き込むために使用する必要があります。

writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");

また、ファイル ビューアーや、ファイルを保存したに使用するプロセスでも、パイプライン全体で UTF-8 が使用されていることを確認する必要があります。Unicode - 文字を正しく取得する方法も参照してください。

于 2012-07-01T04:39:35.927 に答える