1

奇妙なエンコーディングの問題が発生しています。WebからHTMLドキュメントを解析する必要があり、「Content-Type」文字セットメタデータを使用してエンコードタイプを決定しています。1ページで問題が発生し、「Shift_jis」(日本語)でエンコードされています-パーサーの結果に文字化けした文字が含まれています。

UTF-8を使用して同じドキュメントを解析すると、以前は文字化けしていた文字は正しく解析されますが、他のすべての文字は文字化けします。

ドキュメントに2つの異なるエンコーディングタイプのテキストが含まれていると想定しています。

とにかく、このドキュメントを正しく解析できましたか?

また、私はそうしませんが、すべてのブラウザが問題にうまく対処しているようで、ページをうまく表示しています。

これについての考えを本当に感謝します。

解析する必要のあるページ:http://ao.recruit.co.jp/form.html

4

1 に答える 1

0

まず、ブラウザに表示されるのは次のとおりです。

莨夂、セ讎りヲ

text-indent: -9999pxCSSとその上に配置された背景画像のため、レンダリングされたhtmlに表示されるものは同じではありません。しかし、それはそこにあります。それらを削除すると、テキストブラウザが表示していることが表示されます

箱から出して、Shift-Jisとしてデコードすると莨夂、セ讎りヲ?、が得られますが、ブラウザと同じ結果が必要な場合は、次のカスタムCharsetDecoderを使用する必要がありIGNOREます。

URL url = new URL( "http://ao.recruit.co.jp/form.html");
BufferedInputStream bis = new BufferedInputStream(url.openStream());
CharsetDecoder decoder = Charset.forName("Shift-Jis").newDecoder();

decoder.onMalformedInput(CodingErrorAction.IGNORE);
decoder.onUnmappableCharacter(CodingErrorAction.IGNORE);

Reader inputReader = new InputStreamReader(bis, decoder);

String result = IOUtils.toString(inputReader);
System.out.print(result);

これにより、ブラウザの場合と同じ結果が得られます。もちろん、画像ファイルのテキストは解析されません。

于 2013-01-17T09:11:04.673 に答える