- 締切済み
Mechanizeでgetしたpageの文字コード変換
Mecahnizeを使ってgetしたPageのbodyに対して、 文字コード変換したところ、Pageの内容がほとんど消えてしまいます。 よって、タグのサーチやフォームの操作などで失敗してしまいます。 変換前にlinksメソッドを使うと現象が回避されるのを 発見しましたが理由がわかりません。 コードは以下のような感じです。 agent = WWW::Mechanize.new page = agent.get(url) p page #=>いろいろ表示される WWW::Mechanize::Page #lnks = page.links #=>これがないとpageの内容がおかしくなる #変数lnksは全く使っていない page.body = page.body.toutf8 # UTF8に変換 p page #=> 1回目と比較して内容がほとんどなくなっている #linksメソッドを使えば現象が起きない rubyは1.8.7 p174 i386-mswin32です。 mechanizeは0.9.3です。 nokogiriは1.4.1, 1.3.3です。 理由がわかる方、スマートな回避方法、 このコードで使い続けても問題ないか?など ご教授ください<(_ _)>
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4901/10362)
回答No.1
linksメソッドで直るというのがわかりませんが、もし、 ・文字コードがUTF-8でなく、EUC-JP,Shift_JIS,ISO-2022-JPである ・にもかかわらずJIS規格にない丸付き数字とかローマ数字などを使っている ということであれば、文字コードの問題で、回避策があります。
お礼
Mechanizeの研究に時間がかかりすぎてしまいました。 ご回答ありがとうございました。
補足
MechanizeからWWW::がなくなりましたね。。。 それはさておき、 数ヶ月にわたる研究の結果、 @post_connect_hookにコード変換のProcオブジェクトを登録することで解決するようです。