MovableType 4.1への移行と文字コード変換

 Webサーバーを新マシンに移行するついでに、MovableType4のオープンソース版に移行することにしました。そして、同時にかねてからの課題だったUTF-8化に挑戦(BlogWriteIIから投稿した時に「~」が化けなくなるように)。

 様々なページを参考にしましたが、それぞれ微妙に事情が違っていて苦労しました。基本的には、

  • MTはEUC-JPで構築していた
  • MySQLのテーブルはlatin1だった
  • バックエンドDBはMySQL

という状況です。

 結果としては効いたのは、迷惑コメントの消去です。これでMySQLのダンプサイズが劇的に減っただけでなく、奇妙な文字化けによるインポートエラーを回避することができました。MTの管理画面からは見えにくいですが、迷惑コメントタブの方に万単位に溜まってたのでしたorz。

 MT管理画面で一通り不要なデータを削除した後、ターミナルから、

mysqldump –default-character-set=ujis -u user -p dbname > mtdb.sql

としました(もしかすると–default-character-set=binaryだったかも)。赤字部分は環境に応じて修正すべし。次に、これをUTF-8にコンバートし、ファイル内部のlatin1という文字列をutf8に置換します。

nkf -w mtdb.sql > mtdb_utf.sql
perl -pi -e ‘s/latin1/utf8/’ mtdb_utf.mysql

 ついでに、今までの化けた「~」を修正するため、emacsで、波ダッシュを「~」に置換しました。これで下準備は完了です。

 次に、新サーバー側の準備として、/etc/my.cnfの、[mysqld] 、[mysql]、[mysqldump]の項に、

default-character-set=utf8

を追記。[mysqld]には更に、

skip-character-set-client-handshake

も追記。この辺はどれが必須かは不明です。 これで、MySQLの作るDBのデフォルト文字コードがUTFになるので、新しくMovableType用DBを作成し、先ほどのダンプを流し込みます。

mysqladmin create dbname
mysql dbname < mtdb_utf.sql

 ここの流し込みで散々エラーに悩まされましたが、迷惑コメントのデータを一層し、nkfでUTF-8に変換したところ上手くいきました(lvではダメでした)。

 あとは、新規インストールしたmT4のmt-config.cgiでPublishCharsetをutf-8にし、mt.cgiにアクセスしたら自動的にDBの変換が実行され、管理画面で文字化けしてなければOKです。再構築すればUTF-8でページが生成されるはずです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)