default charset が latin1 なテーブルの日本語データの移行作業(1)

週末に知人からメール。b2evolutionで運営しているサイトを別のサーバーに移転しようとしたところ文字化けが発生。考えられる設定はすべて試したがダメらしい。現在のサーバーはあと2日で期限切れというピンチ状態。そりゃ大変だ。

b2evolutionはほとんど触ったことがないけれど、動作環境はいつも使っているLAMPなので何か役に立てるかも、ということでお手伝いすることに。

phpmyAdminでエクスポートしたSQLダンプをテキストエディタで開いてみると、すべの CREATE TABLE で default charset が latin1。続く INSERT 文の日本語の列データはすべて文字化け、、というか壊れてるっぽい。エディタの文字コード設定をいろいろ変えても読めるテキストを復元できない。エクスポート時に latin1 からデフォルトの utf8 に変換する処理が走って日本語のデータを破壊しているような気が。

もしコンソールが使えるなら、phpmyAdmin の代わりに、

mysqldump --default-character-set=binary ・・・

とやってエクスポートすれば無傷のデータを取り出せるかもしれない。でも、残念ながらこのサーバーでは SSH が使えない。うーむ。