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

UTF-8で作成されたテーブル情報を、コマンドプロンプトでselect文などで出力させると文字化けしました。解決までに時間がかかったので記録しておきます。

今回のケースはDBをUTF-8で作成。コマンドプロンプトではUTF-8は利用できないため、自然と文字化けが起こります。様々なWEBサイトを拝見しましたが、バージョンによって対策は大きく異なっているようです。

Mysqlバージョンは5.1.41。

Mysqlにログインしたら【set names sjis】を入力。

select文で出力したところ、無事解決しました。

バージョンによっては、my.iniの[client]を修正とか、chcpコマンドでコマンドプロンプトの文字コードを変更するとありましたが、当方の環境の場合、【set names sjis】だけで対策できました。

Tag : 
Category:MySQLNo Comments

文字コードの設定が異なるデータを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 ホームページ覚書.