Homebrewで入れたMySQL5.1でutf-8を使えるようにする設定
クライアント、サーバ側それぞれをutf8にする
方法
~/.my.cnf にクライアント側の設定を追加
[client] default-character-set = utf8
/usr/local/var/mysql/my.cnf にサーバ側の設定を追加
[mysqld] character-set-server=utf8
サーバの再起動
mysql.server restart
MySQLでのキャラクタ設定の確認方法
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/local/Cellar/mysql51/5.1.67/share/mysql/charsets/ | +--------------------------+--------------------------------------------------------+ 8 rows in set (0.00 sec)
変数の意味はリファレンス参照
テーブルの文字コードの確認方法
mysql> CREATE TABLE stations (name CHAR(255), info TEXT, FULLTEXT(info) WITH PARSER mecab); mysql> mysql> SHOW CREATE TABLE stations\G *************************** 1. row *************************** Table: stations Create Table: CREATE TABLE `stations` ( `name` char(255) DEFAULT NULL, `info` text, FULLTEXT KEY `info` (`info`) /*!50100 WITH PARSER `mecab` */ ) ENGINE=MyISAM DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
メモ
サーバ側に skip-character-set-client-handshake を設定して、クライアント側の文字コードの設定を自動的にサーバに合わせる方法もあるけど、セキュリティ的に問題があるらしい