Movable Type ユーザーさんの環境移行のサポートを行った時のメモ。
MySQLのデータがLatin1で保存されていた場合SSHやmysqldumpコマンドが使える環境であれば、dumpデータをUTF8に変換するTipsはいくつか存在します。
例:http://qiita.com/tukiyo3/items/77c75f355e71d52e65f7
しかし諸事情でssh接続できず、phpMyAdminしか使えない環境の場合、上記のようなTIPSが使えません。
このような状況下で、phpMyAdmin経由でエクスポートしたSQLデータを、ローカル環境でUTF8に変換した際のメモです。
Latin1対応のエディタを利用する
phpMyAdminはデータのエクスポート時に、UTF8でdumpデータを生成するようです。
しかし、MySQLの照合順序(collation)がLatin1に設定されているDBの場合、phpMyAdminはLatin1で保存されたデータをわざわざUTF8でdumpするため、文字化けしてしまいます。
これを以下の手順で解消しました。
- Latin1での読み込み・保存が可能なエディタを用意する
- phpMyAdminから出力されたSQLデータをエディタで読み込み
- 2で読み込んだデータをLatin1形式で保存
- 3で保存したSQLデータを、UTF8形式で再読み込み
- CHARSETの指定がLatin1になっている箇所をUTF8に変更
- 4,5の操作を行ったものをUTF8形式で保存
- 6で保存したSQLデータをMySQLにインポート
先述の通り、phpMyAdminはLatin1で保存されていたDBデータをUTF8で出力しているため、これを1-3の手順でLatin1に変更し直します。
その後、改めてUTF8形式のデータとして保存し直します。
CHARSETをUTF8に指定することで、インポート時に齟齬が起きないようにします。
作業を行った環境
以下の環境で作業を行いました。
- Windows 8.1 + さくらエディタ
Macでも、Latin1をあつかえるエディタなら対応可能と思われますが未検証。