« 一意なパッケージ名の取得 | メイン | Unicode (UTF-8) では表示フォントが異なる? »

2005年02月06日

MovableType エントリーの文字コードをコンバートする

MovableType で使用する文字コードは mt.cfg ファイル内で指定できますが、 これはあくまで画面に表示する際や、新しく書き込むエントリーのコードを指定できるに過ぎません。 データベース内にはエントリー時に指定していたコードで書き込まれているため データベースの内容自体をコード変換する必要があるのですが、 MovableType 自体の機能ではコード変換は提供されていません。 いくつかの方法が各サイトで紹介されていますが

とくにデメリットのない方法として、 MT のライブラリを使用してコンバートするスクリプトが MT 開発用ブログに公開されています。

Movable Type の文字コード変換スクリプト

このスクリプトの場合 MT のライブラリ経由でエントリーやテンプレートの内容を取り出し、 MT 内の I18N モジュールもしくは Jcode を使用してコード変換した結果を また MT ライブラリ経由で DB に戻しているため、 DB の種類には全く依存せず使用できます。

なお、自分が実行した環境は

でした。
はじめコンバート元のコード指定を「(auto)」(自動判定)にしていたところ 処理が途中から全く進みませんでしたが、 明示的にコードを指定すると全く問題ないなく変換できました。 スクリプトの内容を見てみたところ、(auto) を指定した場合は Jcode を、 明示的に指定した場合は I18N を使用しているため Jcode の呼び出しに問題があったようです。

なお、このスクリプトは

ブログデータベースの内容を一件ずつ呼び出し、しかるべき変更を加えて戻す
という処理を繰り返しているため、文字コード変換を行っている部分を書き換えれば 多くの応用が考えられます。 実際自分もエントリー内の特定の箇所を一括置換する必要があったため コード変換の変わりに perl の置換処理を入れ、 うまく稼動させることが出来ました。 (上記「文字コード変換スクリプト」をベースにしているため公開はしませんが、 興味のある方は個別に当サイトにご連絡ください)。

投稿者 kyohei : 2005年02月06日 01:27

トラックバック

このエントリーのトラックバックURL:
http://240k.jp/cgi-bin/MT333/mt-tb.cgi/112

このリストは、次のエントリーを参照しています: MovableType エントリーの文字コードをコンバートする:

» mixi に RSS が反映されなかった理由 from 執務録@meta-metaphysica.net
mixi の RSS パーサは、文字コードが UTF-8 の RSS しか通して... [続きを読む]

トラックバック時刻: 2005年02月12日 05:32

コメント

コメントしてください




保存しますか?