XML/RSS Feed
ファイルの文字化けを解消する
Perl スクリプト
iBlog で出力した XML/RSS Feed
ファイル(rss.xml)を iBlog
で参照しても文字化けしないようにする
Perl
スクリプトを作ってみた。
(2003
11/05)このスクリプトは
iblogPatcher
に統合されました。
iBlog が出力する XML/RSS Feed
ファイル(rss.xml)
は日本語が実体参照になっている。また公開日(pubDate
要素)の曜日の値は Shift_JIS
になっている一方、XML
ファイルとしてのエンコードは
iso-8859-1 (ラテン文字)
となっている。まだ iBlog
が実体参照の文字を正しく解釈してくれればよいのだが、エントリーのタイトル部分ではそうなっていない。
日本語と思しき実体参照を
UTF-8 の文字に変換し、rss.xml
のエンコードを UTF-8
にしてしまえば iBlog
で参照してもエントリーのタイトルは見えるはずだと考えやってみたところ見事に成功した。実体参照を手で
UTF-8
の文字に変換するのは面倒だったので
Perl
スクリプトを作成してやってみた。
当初はこのスクリプトは実験目的だったので、UTF-8
に限らず EUC-JP や Shift_JIS
にも変換できたのだが、どうもそれでは
iBlog
が読み取れなくなってしまう。それで
UTF-8
限定にした。ついでに
Pod
によってマニュアルも書いて、デバッグ用のコードはオプションで有効になるようにしリリース用を作成した。
私の
blog
では要旨だけ付けて本文は付けていないから、まだテストが十分とは言えないのでβ版として公開する。私が十分だと思う期間を経て(気が向いたときともいう)特に問題の報告がなければ正式版としてリリースする。とはいえ、自分が使うスクリプトを公開しているだけなのでリリースされてもβ版のままでも私自身には影響がないのだが、きっと利用してくれる人の安心感や、自分が持っているバージョンが改良されたことの目安になると思う。
といっておきながら、既に問題点が一つ見つかっている。それは、エントリーのタイトルに改行が入って
iBlog
で見ると二行目以降が見えないという問題だ。これは元の
iBlog が出力する XML/RSS Feed
ファイルに既に改行が入っているためで、このスクリプトのバグではない。このスクリプトを使えば
iBlog が出力する XHTML
ファイルも実体参照をなくして
UTF-8
に変換できる(と思う)。これのためにタイトルの改行を補正することは控えた。なぜなら
XML/RSS Feed
ファイルにあまりにも特化した処理で、汎用性を欠いてしまうからだ。
利用環境には
Perl 5.6.X
が入っていること、Perl
のモジュールとして Jcode
と Jcode::Unicode
が入っていることの二点が必要である。私は
Perl をよく使うので Jcode
関連がもともと Mac OS X
にあったのか後から入れたのか失念してしまった。もしなかったら自分で入れてほしい。
スクリプト:
http://homepage.mac.com/yuji_okamura/.Public/iBlog/iblogConv.pl.sit
マニュアル:
http://homepage.mac.com/yuji_okamura/.Public/iBlog/iblogConv.html
これをプレビューされた
blog
のファイルに使わない方がいいだろう。というのは、プレビュー段階では置換できない
REPLACE
があり、それは公開される時に置換されるからだ。実際に置換後の値に
Shift_JIS
コードが使用されるものがあり、ファイルのエンコーディングがチグハグになってしまう。
(2003
10/23)
ファイル名からそのファイルのための特殊処理のサブルーチンへの対応を外部ファイルで指定できるようにすれば、汎用性を維持した上で
iBlog
の不具合を補正するスクリプトになるということに気が付いた。皆が使いやすいように
File::Find
モジュールを利用して指定ディレクトリ以下を巡回して変換するようにもしたいし。ラッパーコマンドを別に用意した方がいいかもしれない。
Posted: 14:17
|
Comment
|
Trackback
Trackback Ping URL(U)
以下、類似エントリです。
JavaScript が有効でないと類似エントリは表示できません。