dポイントプレゼントキャンペーン実施中!

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です。
理由がわかる方、スマートな回避方法、
このコードで使い続けても問題ないか?など
ご教授ください<(_ _)>

A 回答 (1件)

linksメソッドで直るというのがわかりませんが、もし、


・文字コードがUTF-8でなく、EUC-JP,Shift_JIS,ISO-2022-JPである
・にもかかわらずJIS規格にない丸付き数字とかローマ数字などを使っている
ということであれば、文字コードの問題で、回避策があります。

この回答への補足

MechanizeからWWW::がなくなりましたね。。。

それはさておき、
数ヶ月にわたる研究の結果、
@post_connect_hookにコード変換のProcオブジェクトを登録することで解決するようです。

補足日時:2010/05/22 07:21
    • good
    • 0
この回答へのお礼

Mechanizeの研究に時間がかかりすぎてしまいました。
ご回答ありがとうございました。

お礼日時:2010/05/22 07:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!