Mechanizeの内部文字コードって・・

先日からソースコードのutf8化を進めている。
作業自体はそんなに大変なものでもなく、
・ ソースをutf8に変換(nkf)
・ Jcodeで変換していた部分を、encodeに書き直し
・ 出力部分にdecodeを入れる
と、いたって平和な修正で作業が進むはずであったが、
中にうまく動かないシステムが出てきた。
しかも、全然動かなければ対処のしようもあるが、
数百のループの後でおかしな挙動がある。
しかもその取得しているWEBページが一定でもない。
いろいろといじってみると、どうも、Mechanizeの返値が一定していないことがわかった。
原因はわからないし、追求していく時間もないので、結論だけ書くと・・・
MechanizeのGetで取得したページを、contentで参照したときに、
MechanizeのGetの返値のcontentと、そのものが保有するcontentの文字コードが
違う・・・
今までは返値のcontentをTreeBuilderにparseしていたが、
そのもののcontentをparseすることで解決した。
しかも、このMechanizeの内部で、Getしてきたページのソースを、
Guessでencodeしているようで、decodeしてからparseすると、
はまります。
(だいぶはまってしまった・・・(–;)
これで、今まで懸案だった、シグナルを出せそう。

「Mechanizeの内部文字コードって・・」への2件のフィードバック

  1. おひさしぶりです。
    WWW::Mechanizeの日本語処理は、ちょっと問題があるようです。Mechanizeを含め、Perlの日本語処理(特にMac関係)は、私の知る限り、この本が一番詳しいようです。
    ご参考まで。

  2. お久しぶりです。
    情報ありがとうございます。
    この本は、原書を持っているのですが、当然日本語処理ありません(^^;
    一度、見てみたいと思います。
    XMLの処理でも日本語が絡むと面倒ですね・・
    各モジュールがutf-8に完全対応まで、しばし凌ぐしかないですね。
    このあたりのことに関しては、
    進歩が遅いので何年凌がないといけないかわかりませんけど(^^;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です