LoginSignup
7
8

More than 5 years have passed since last update.

phpMyAdminしか使えない環境で、Latin1で保存されているMySQLのdumpデータをUTF8に変換する方法

Last updated at Posted at 2016-02-22

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するため、文字化けしてしまいます。

これを以下の手順で解消しました。

  1. Latin1での読み込み・保存が可能なエディタを用意する
  2. phpMyAdminから出力されたSQLデータをエディタで読み込み
  3. 2で読み込んだデータをLatin1形式で保存
  4. 3で保存したSQLデータを、UTF8形式で再読み込み
  5. CHARSETの指定がLatin1になっている箇所をUTF8に変更
  6. 4,5の操作を行ったものをUTF8形式で保存
  7. 6で保存したSQLデータをMySQLにインポート

先述の通り、phpMyAdminはLatin1で保存されていたDBデータをUTF8で出力しているため、これを1-3の手順でLatin1に変更し直します。
その後、改めてUTF8形式のデータとして保存し直します。

CHARSETをUTF8に指定することで、インポート時に齟齬が起きないようにします。

作業を行った環境

以下の環境で作業を行いました。

  • Windows 8.1 + さくらエディタ

Macでも、Latin1をあつかえるエディタなら対応可能と思われますが未検証。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8