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 を設定して、クライアント側の文字コードの設定を自動的にサーバに合わせる方法もあるけど、セキュリティ的に問題があるらしい