前のサーバーで文字コードをEUCからUTF-8に切り替えた際に、~という文字が?に文字化けしてしまう問題をかかえていて、原因は推測できていたのですがおいそれと直せないので、サーバー移転時に直してみました。
結論から言うとMySQLがもっている自動文字コード変換機能とMovableTypeの相性でした。
なおした手順
1.データーベースをExportする。
この時文字列をバイナリー化しないオプションを利用する
Insertを使ったエクスポート形式(SQL形式でとりだす)
2.テキストエディターで文字コードをUTF-8に変換する。(必要がない場合もあるかと)
3.当初EUC文字コードでDBが作られていると思うので随所にujisとかujis-binの文字列があるとおもわれるこれをそれぞれutf8 utf8_general_ciなどに置換する(テキストエディターで)
4.インポートする
もともと、MySQLの文字コードがEUCであり、エクスポートしたときにEUCを保つようにエクスポートされているが、MT自体はUTF-8で動いていることが問題。
なので、テキストエディターを使って手動で文字コードをUTF8にしてあげれば無問題
MySQL+Movable TypeのDBをEUCからUTF-8うつすときのTIPSでした。
意外と気が付かずにそのまま移行しちゃいがちなのですが、けっこう文字化けるので、ぜひ一手間かけましょう。