LUNARAVE WEBクリエイターの仕事と休息

アクセスカウンタ

Google Maps APIの利用戦国IXAWeb技術Youtubeチャンネル

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

<<   作成日時 : 2011/06/17 18:27   >>

ブログ気持玉 0 / トラックバック 0 / コメント 1

データベースを利用した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件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(1件)

内 容 ニックネーム/日時
Greetings! Very useful advice in this particular post!
It is the little changes that produce the most important changes.
Thanks a lot for sharing!
Alisa
URL
2017/07/24 09:15

コメントする help

ニックネーム
URL(任意)
本 文
MySQLのダンプファイルが文字化けしている時の対応 LUNARAVE WEBクリエイターの仕事と休息/BIGLOBEウェブリブログ
文字サイズ:       閉じる