UTF-8がからむ文字化け解決
http://www.pure.ne.jp/~learner/program/Perl_unicode.html#use_utf8
Perl 5.8 以降においての Unicode 文字列の扱い方 : NDO::Weblog
のサイトのみなさまの、記述を参考にして、mag2rss.cgiの文字化け問題は解消しました。
ソース内で、eucのソースコード内でuse utf8;というのを、適当に記述していたのですが、これがまずひとつ問題でした。
このプラグマは、そもそも、互換性のための工夫です。Perl 5.6未満のバージョンでは、ソースコード中の恣意的なバイト列を許していました、ですが、将来、ソーステキストに、UTF-8 エンコーディングを標準化したいと思っています。Perl に script が UTF-8 で書かれているということを教えることの他に、このプラグマを使ってはいけません。下に書かれている、utf8のユーティリティ関数は、それ自身の目的で有益です。それらは、"プラグマ的な"効果の部分ではまったくありません
ということで、eucのソースコードで、use utf8をしてしまったおかげで、どうも不本意な動きになっていたようです。詳細は、まだ解明できていませんが....
現状の動きの整理です。
・XML::RSS->add_itemのときセットされる文字列ははUTF-8 flagなしとする。
・XML::RSS->save($cachefile);を
・XML::RSS->parsefile($cachefile);のように読み込むと、取り込んだdescription等の項目はUTF-8フラグが付与されている。
よって、再度、XML::RSS->add_itemするときは、UTF-8 flagをはずす必要がある。
書くとき、はずしていても、読み込むとついちゃうことを考慮して、文字化けせずにキャッシュで切るようになりました。
めでたし!
以下のURLでまぐまぐ - 結城浩の『Perlクイズ』 -のRSSを取得できます
http://rss.rdy.jp/mag2rss.cgi?id=0000015670&s=237
このメルマガは、いつも、以下のように始まっています。
===========================================================
結城浩の『Perlクイズ』2004-06-18 No.0087
http://www.hyuki.com/pq/
===========================================================
■今日の一言
- -
こんにちは、結城です。
クイズを通してPerlを学ぶメールマガジン『Perlクイズ』をお送りします。
またまた、出題直後にたくさんの解答をいただきました。
みなさん、ありがとうございます。(^_^)
mag2rss.cgiのsオプションで、切り出し位置を237文字目からにしています。
これによって、RSSのDiscriptionには、
>-こんにちは、結城です。クイズを通してPerlを学ぶメールマガジン『Perlクイズ』をお送りします。またまた、出題直後にたくさんの解答をいただきました。みなさん、ありがとうございます。(^_^)この問題は同値関係を求めているわけですけれど、頭で想像するほど簡単にはいかない
以上のように、定型のヘッダが省略されています。