L
次のページ
H
前のページ
U
上のページ

« 一つのエントリに複数のカテゴリ | Main | 仮名漢字変換が追いつかない »

2005年10月18日

iBlog からのインポート

Thingamablog で初めて ブログをし始める場合や、今までのブログとは別なブログを新たに作る場合は別によいのだが iBlog を使ってきた身としてはやはり iBlog のエントリ群をインポートできるかどうかが気になるところだ。

完全なインポートは相当努力が必要だと思うが、お手軽な方法がある。Thingamablog には RSS からエントリをインポートする機能があるのだ。そこで実験用のブログを Thingamablog で作ってそこに既存の iBlog によるブログの RSS からインポートさせてみた。

iBlog の RSS はプレビュー段階ではまだ完成されていない。公開して初めてちゃんとした RSS になる。そこでインポート元の RSS はオンラインの RSS として URL を指定してインポートしてみた。結果は NG である。エントリは作られてるのだが日本語が文字化けしているのだ。その文字化けの仕方は以前の iBlog にも見られたものと同じ種類のものだった。UTF-8 日本語で書かれた文字が無理矢理 ISO-8859-1 として解釈された結果の文字化けだった。

もちろんその RSS の XML 宣言では文字コードが UTF-8 だと指定してある。不審に思ってソースを見てみた。そうしたら RSS を URL から読み込む際にエンコードは次のようにして判定されることがわかった。

  1. とりあえず IS0-8859-1 と仮定しておく。
  2. RSS がある Web サーバが指定する charset があればそれを用いる。

原因はこれだ。多くの Web サーバでそうであるようにリクエストされたファイルのメディアタイプはちゃんと答えるが、それに続く charset の指定は .Mac のサーバ homepage.mac.com は省略してしまう。これはどの charset が用いられているかを知るためにはそのファイルごとに違うかもしれないからだ。.htaccess などをユーザが置くことができるサーバならばやりようはある。しかし homepage.mac.com にはそんな機能はない。だから省略されてしまう。 ところが charset が省略された場合のデフォルトは ISO-8859-1 なのだ。だからこそ RSS 自体をどんなに Valid にしても Feed Validator は警告を出す。( サイト CacheUpIt の RSS の例)

これは標準自体がそういう規定なのだからしかたがない。Thingamablog を改造して UTF-8 をデフォルトにしておくことでも解決できるが、わざわざ標準から外れさせるのは改悪だ。ソースを見ると URL 指定するリモートの RSS ではないときは OS の標準というかそのロケールでの標準のエンコードを用いるようになっている。Mac OS X の日本語環境ではファイルのエンコードは普通は Mac Shift_JIS が用いられる。そこで iBlog からエントリをインポートするには次のようにすればよい。

  1. 目的のブログの RSS のエントリ数を、既に存在するエントリ数以上に設定する。
  2. 目的のブログの RSS にはエントリの概要だけでなく本文も載せるように設定する。
  3. ローカルの公開ロケーションを作って、それに目的のブログを割り当てる。
  4. 一旦その状態で目的のブログをローカルへ 公開をする。
  5. エディタでローカルへ公開された RSS を開き XML 宣言の charset を Shift_JIS に変更する。
  6. エディタで開いている RSS を Shift_JIS で保存する。
  7. Thingamablog で保存した RSS をインポートする。

これで目的のブログの全エントリがインポートされるはずだ。画像などのメディアファイルといったエントリに添付されているファイルもダウンロードされて取り込まれるのかどうかとか、iBlog が大量のエントリを RSS にちゃんと載せることができるのかどうかというのは確認していない。