ちょっと深く使おうとすると、色々問題が見えてきたのでメモ。
[Read More!]
この前ちらっと「なんか本読んでたら〜」と書いたけど、その本というのは
Spidering Hacks。
LWP::UserAgent とか、WWW::Mechanize とか便利そうな Perl モジュールが色々紹介されてるけど、WWW::Mechanize は日本語の処理に問題があるとか。
そんなわけで、日本語版には HACK101 として日本語版のモジュールである WWW::MechanizeJHack が収録されてます。
(これは上記のサイトから落とせます)
で、インストール方法は
(1) ppm で WWW::Mechanize 0.72 のインストール
(2)
http://search.cpan.org/src/PETDANCE/WWW-Mechanize-1.02/lib/WWW/Mechanize.pm を落として、先ほどインストールしたファイルを上書き
(3) さらに HTML::FormJHack.pm と WWW::Mechanize をコピー
だそうで、ちょっぴり面倒そうです。
私は少なくとも 3 台のマシンに対してこの操作を行う予定がある(しかもそのうち一台はインターネットに接続できない)ので、簡単にインストールできるように準備しておきました。
[Read More!]
Perl で
open (FH, "<:encoding(shiftjis)", "hoge.txt");
とかやって、ShiftJIS で入力 → UTF-8 で処理 → 再度 ShiftJIS で出力、なんて処理を今までよく書いてたわけですが。
どうもこの変換の過程で機種依存文字がおかしくなってしまうみたいです。
(出力結果を見ると \xff とか出力されたり?)
なんかこのあたり仕事で使うこともありそうなので、解決方法を調べてみました。
http://saba.three-a.co.jp/~toku/diary/?200307c&to=200307295#200307295
あたりにまとまってまして。
encode 周りを使う場合は "shiftjis" でなく "cp932" を指定してやればいいそうです。
んー・・・ShiftJIS と CP932 って別物だったんですね。
やっぱ体系的に学習してない分野の知識はかなり怪しいなぁ。
で、実際それでうまく処理できてるみたいです。
今後よほど特殊な条件(機種依存文字を出力するとまずい場合や、古い Encode モジュールしか使えない場合)以外は "cp932" 指定で行こうと思います。