カスタム検索

2009年1月23日金曜日

httpBuilderで文字化けする件について

httpBuilderでgoogleのサイトを取得している時はうまくいってたのですがShift_JISのサイトを取り込もうとしたらUTF-8になってしまいました。
まぁよくある事だと思ってソースをさぐっていったのですが、思ったよりも深い所で大変でした、、、

結論からいくとContentTypeが text/html,text/plain,text/xml などの場合は、 ParserRegistry というクラスの parseText という所で、 HttpResponse から charset をあてて InputStream にして返しています。
この charset をあてる所がくせもので、 HttpResponse に含まれるパラメーターの charset を使い、なければ OSデフォ(Charset.defaultCharset().name())をあてるという処理になっています。
おそらくテストしたサイトの response に charset のパラメーターがついていなくて、UTF-8があたったっぽいです。

とりあえず parseText に無理矢理 charset をのせてやったらうまくいきました :)
でもちゃんと作るなら ParserRegistry に charset をあてれるように拡張しないといかんとですね。

0 件のコメント: