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.

Posted by rukihena at 23:07:28
トラックバックURL

このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/511

コメント