MechanizeがEUCのページ(mixiとか)をうまく解析してくれない件で、ずっと試行錯誤していたけど、思い立ってそのあたりのソースを追ってなんとか解決した。hookが用意してあるんだけど、そのhookにメソッドを追加する方法がわからないので、むりやり押し込む。それっぽい名前のhookなので、コード変換をやるとしたらここなんだろうと思う。
class WWW::Mechanize def set_hook @post_connect_hook.hooks << Proc.new do |params| params[:response_body] = NKF.nkf("-wm0",params[:response_body]) params[:response]["Content-Type"]="text/html; charset=utf-8" end end end agent = WWW::Mechanize.new agent.set_hook page = agent.get("〜〜")とか
コード変換の自動認識がうまくいかない場合に備えて、nkfのパラメータで入力の文字コードを明示指定したほうがいいだろうが、上記コードでは省いた。
2009-07-11追記:
Mechanize0.9.3で文字コード認識が改善され、この対処は不要に。
2009-11-25追記:
修正版が、id:otn:20091124 に。