Mysqlの文字コードの設定
Mysqlを使用する上でサーバー側とクライアント側両方の文字コードを考慮する必要があります。
サーバー側とクライアント側の文字コードを一致しておけば文字化けを防ぐことができます。
今回はサーバー側とクライアント側をUTF-8に統一してみたいと思います。
現在の文字コードの確認
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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に変更し文字化けが起こらないように設定します。
1 2 3 4 5 6 7 8 9 10 11 12 | [root@centos ~] vi /etc/my.cnf [mysqld] default-character-set = utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci [client] default-character-set = utf8 [mysql] default-character-set = utf8 |
skip-character-set-client-handshakeの指定は、MySQLが勝手に内部変換しないようにするためです。
設定完了後、編集した部分が反映されているか確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@centos ~] /etc/init.d/mysql restart [root@centos ~] mysql -u root -p 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/ | +--------------------------+----------------------------+ |
色々な値が表示されますが、特に関係があるのは次の値です。
これらをおさえておかないと文字化けが発生する可能性が高くなります。
1 2 3 4 | character_set_client utf8 クライアントが送信する文字コード character_set_connection utf8 文字コード情報が無い文字列の文字コード character_set_results utf8 クライアントへ送信する文字コード character_set_server utf8 サーバのデフォルト文字コード |
文字コードをlatin1からUTF-8に変更することができました。
Author Profile
スターフィールド編集部
SHARE