HTML・Wordpressなどの覚え書きブログ

文字コードの設定が異なるデータをdumpすると文字化けが発生していまいます。解決までに予想以上に時間がかかったため、メモ・・・。

今回MySQLをインストールした手段は、XAMPPパッケージ。Windows XPマシンで、MySQLバージョンは5.141。MySQLの文字コードの初期設定は「latin1」。dumpするテーブルデータは「cp932(※1)」。

都合により「cp932」の文字コードでそのまま読み込ませたかったので、MySQLの文字コードを「cp932」に設定する。

まず、初期設定の文字コードを判断するために、「show variables like “char%”」とコマンドを。SHOW VARIABLES 構文はMySQLのシステム変数の値を表示するもの。likeを指定することでパターンと一致する変数のみを表示することができる。

既に文字コードを設定した後なので「cp932」になっているが、初期設定では「latin1」になっている。

ここから文字コード変更の作業へ・・・。

XAMPPによるセットアップでMySQLがインストールされているフォルダに「my.ini」がある。これをテキストエディタで開き、[mysqld]・[mysql]・[mysqldump]を修正。

●[mysqld]
・default-character-set=cp932を追加。
(文字コードの指定)
・skip-character-set-client-handshakeを追加。
(クライアント情報を無視して、サーバーのデフォルトのキャラクタセットを使用。「character-set-client-handshake 」と記述するとクライアント情報を無視しないようになる。)

参照:http://dev.mysql.com/doc/refman/5.1/ja/server-options.html

●[mysql]
・default-character-set=cp932を追加。

●[mysqldump]
・default-character-set=cp932を追加。

以上3箇所を修正した後、MySQLを再起動。再び「show variables like “char%”」で文字コードを確認すると画像のように変更されている。

そして、目的であったデータをdumpしたところ、文字化けは解消していました。

この件に関して、自分の環境にあった解決方法を見つけるまでかなり時間がかかりました・・・。

(※1)Windowsの文字コードは「シフトJIS」を拡張した「cp932」。①などはcp932によるもので、シフトJISでは存在しない。

Tag : 
Category:MySQLNo Comments
Copyright ホームページ覚書 All Rights Reserved.
Template by ホームページ覚書.