先日からソースコードの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すると、
はまります。
(だいぶはまってしまった・・・(–;)
これで、今まで懸案だった、シグナルを出せそう。
おひさしぶりです。
WWW::Mechanizeの日本語処理は、ちょっと問題があるようです。Mechanizeを含め、Perlの日本語処理(特にMac関係)は、私の知る限り、この本が一番詳しいようです。
ご参考まで。
お久しぶりです。
情報ありがとうございます。
この本は、原書を持っているのですが、当然日本語処理ありません(^^;
一度、見てみたいと思います。
XMLの処理でも日本語が絡むと面倒ですね・・
各モジュールがutf-8に完全対応まで、しばし凌ぐしかないですね。
このあたりのことに関しては、
進歩が遅いので何年凌がないといけないかわかりませんけど(^^;