2006年7月27日
MovableTypeバージョンアップ
Movable Typeのバージョンアップと移転とMySQLのダウングレードを同時に行った。
今まではカイシャの鯖に突っ込んでいたのだが、自宅鯖に移転した。CentOS4.3からDebian3.1にしたため、パッケージ管理されたMySQLのバージョンが 4.1から4.0にダウングレードすることになった。
日本語を使う場合、MySQLの4.1は鬼門である。自動変換が変に働いて文字化けに苦しめられることになる。
そんな事情を今まで知らずに、4.1でなんとなく動いていた。動いてはいるが、phpmyadmin で見ると化け化けだった。でも使えているので気にしていなかった。
しかし、移転するときにハマった。phpmyadmin でエクスポートしたファイルが化け化けでどーしようもない。
バイナリダンプしてみたところ、UTF8のコードをさらにUTF8でエンコードしているっぽい。UTFの複数バイトになった各バイトを、0x80以降の8bit値としてエンコードしやがっている。
しょうがないので PHP のコマンドライン版でコンバートプログラムを書いた。しかし、半角カナが化けたり、} が化けたり、どうにもうまく行かない。
PHPの関数に頼らず、Cで UTF-8の変換をチマチマやるコードを書いたが、やはり半角カナとか } で引っかかる。} でハマる現象は初めて経験した。UTF-8では鬼門文字なのだろうか。
さまざまな変換コードを書いたが、最終的には、mysqldump コマンドの引数に --default-character-set=binary を付けたら文字化けせずにエクスポートできた。マニュアルちゃんと読んだけど --default-character-set オプションの説明はなかったぞ! トンだ回り道させられたよ。
--default-character-set オプションに気づいたのは Software Design 誌を読み返したときだった。ありがとう、SoftwareDesign.
このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/511