MySQLの文字コードの設定を調べる
下記コマンドで現在のMySQLの文字コードの設定を調べます。
[root@centos ~] mysql -u root -p ※MySQLにログイン Enter password: mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
上記のようにlatin1が表示された場合は文字化けが起こってしまいます。
設定ファイルの編集
設定ファイルに以下のように追記します。
ここでは文字コードをUTF-8に設定します。
設定ファイルのパスは/etc/my.cnf(apt-getでインストールした場合は/etc/mysql/my.cnf)です。
[root@centos ~] vi /etc/my.cnf ※MySQLにログイン [mysqld] 〜略〜 以下を追加 default-character-set = utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [client] default-character-set = utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8
skip-character-set-client-handshakeの指定は、MySQLが勝手に内部変換しないようにするためです。
編集が完了したらMySQLを再起動して設定を反映します。
[root@centos ~] /etc/init.d/mysql restart ※MySQLを再起動 [root@centos ~] mysql -u root -p ※MySQLにログイン Enter password: mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
ちなみに上記設定は新しく作られるデータベースから反映されるため、既存のデータベースには反映されません。
最終更新 2009-10-12

この記事へのコメント
まだコメントは投稿されていません。