私は最近解決すべき非常によく似た問題を抱えていました。他の回答と同様に、私もHttpClientなどで遊んでいました。ただし、これらのライブラリでは、ダウンロードするファイルのエンコーディングを事前に知っている必要があります。そうしないと、取得したHTMLファイルを変換すると、判読できない文字になります。
HTMLファイルのエンコーディングはHTMLファイル自体でのみ指定されているため、このアプローチは機能しません。HTMLのバージョンに応じて、エンコーディングはXMLヘッダー、2つの異なるヘッドメタタグ要素など、さまざまな方法で指定されます。このアプローチに従う場合は、次のことを行う必要があります。
- ファイルをダウンロードし、コンテンツを見て、HTMLコンテンツを解析してエンコーディングを理解します。
- ファイルをもう一度ダウンロードして、適切なエンコーディングを指定します。
特に、適切なエンコーディング文字列のためにHTMLコンテンツを解析すると、エラーが発生しやすくなります。代わりに、 JSoupのようなライブラリに依存することをお勧めします。JSoupがその役割を果たします。したがって、httpclientを介してファイルをダウンロードする代わりに、JSoupを使用してファイルを取得してください。さらに、JSoupは、HTMLページのさまざまな部分(ページタイトルなど)に直接アクセスするための優れたAPIを提供します。