MySQLを使用するアプリケーションで日本語の文字化けが発生する場合、MySQLとアプリケーションの文字コードが一致していないことが多いです。
解決策の一つとして、MySQLサーバーとMySQLクライアントで同じ文字コードを使うようにして、文字コード自動変換機能を使わないようにする方法があります。
MySQLの設定ファイルmy.cnfを以下のように変更すると、解決できることが多いようです。
4.1系
MySQLとアプリケーションの文字コードを明示的に設定する。
文字コード名は実際に使う文字コードに置き換えてください。(utf8, sjis等)
[mysqld] character-set-server=ujis init-connect=SET NAMES ujis
5.0系
アプリケーションでMySQLからデータを取得するときに、文字コードの自動変換を行わないようにする。
[mysqld] default-character-set=utf8 character_set_server=utf8 skip-character-set-client-handshake
MySQLの日本語環境の詳細については下記リンクを参照してください。
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_40
http://itpro.nikkeibp.co.jp/article/COLUMN/20070614/274802/?P=1&ST=oss
- mysqlで自動変換を止めても文字化けが直らなかったのですが、上記skip-character-set-client-handshakeで直りました。ありがとうございました。 — mocapapa {2009-01-09 (金) 16:42:49}
- [mysqld]とすぐ上に書くのを書いていなくてなかなか反映されませんでした。 — ななし {2010-05-12 (水) 13:30:52}
- skip-character-set-client-handshakeのみで文字化け直りました。感謝です。default-character-set=utf8を記述するとエラーが発生しmysqldが立ち上がりませんでした。 — なおちゃん {2012-01-15 (日) 01:40:23}