MySQLのダンプファイルが文字化けしている時の対応

データベースを利用したWebアプリケーションを構築していると、データをリセットしたりマスタデータを初期化するためにデータベースをダンプ(バックアップ)してそれを戻す(リストア)作業を取ることが多いが、MySQLでそのダンプしたファイルが文字化けし、それをリストアすると文字化けも反映されてしまうことがあるのでその対応法を紹介する。

まず前提として、今回はMySQLの文字コードは"UTF-8"とするため、設定ファイルを更新する。

インストールの状況にもよるが、yum等でインストールしたのであれば、MySQLの設定ファイルは「/etc/my.cnf」にある。

そのファイルをviで開いて下記を追記または編集する。


[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_unicode_ci
init-connect = SET NAMES utf8

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8



設定を適応するためにはMySQLの再起動が必要なので下記コマンドで行う。


/etc/init.d/mysqld restart



準備が整ったところでダンプを行う。


# mysqldump -u root -p --default-character-set=binary データベース名 > /保存先/ファイル名



ダンプしたファイルをFTP等で取得し、手元のパソコンに入っているテキストエディタで開くと編集することができるのだが、問題はこの時に文字化けしている。

これより先はダンプファイルの文字化けを正常に戻し"UTF-8"で保存しなおす。

まず、ダンプファイルをテキストエディタで開く。
ただ、どのテキストエディタでもよいわけではなく、エンコードの指定で「西ヨーロッパ言語(1252, iso-8859-1)」と「UTF-8」に読み込みと書き込みができるソフトでないと対応できない。

ちなみに今回は"EmEditor"を利用している。

ファイルを開いたら[ファイル]-[名前を付けて保存]を選択し、「ファイルの種類」を「西ヨーロッパ言語(1252, iso-8859-1)」を指定して任意の場所に保存する。

 西ヨーロッパ言語に保存


保存した後、開いているファイルを閉じずに[ファイル]-[読み直し]を選択し、エンコードを"UTF-8"に変更すると開いている文章の文字化けが解消する。

編集した後は保存時にモジコードが"UTF-8"になっているのを確認し、保存する。

この状態であればデータベースにリストアしても文字化けすることなく復帰することができる。


日本を始め、全角文字を利用している言語地域はアプリケーションの脆弱性やバグに注意するだけでなく文字化けにも気を払わなければならないので半角文字圏より大変だ。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック