最初に
別に今回のネタはclound9に限った話ではない。またMySQL側の設定確認が面倒なので、事前にphpMyAdminをインストールしておくものとする。
一般的な日本語設定手順
-
/etc/mysql/my.cnfを開き、下記セクションに設定を追記する。
- [mysqld]セクション末尾に
character-set-server=utf8
を追加する - [client]セクションに
default-character-set=utf8
を追加する
- [mysqld]セクション末尾に
mysqlを再起動する。
mysql-ctl restart
phpMyAdminを開き、
show variables like "chara%";
を実行して下記の設定になっていることを確認する。
+-------------------------+--------------------------+
|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/|
+-------------------------+--------------------------+
ハマりポイント
- my.cnf編集時にsudoせずに開き読み取り専用になってしまって保存ができない。
- utf8をutf-8と書いてmy.cnfに記述してしまい、mysqlのrestartに失敗する。
- すでにテーブルを作成した状態で上記設定変更を行う。結果既存テーブルは文字化けのままで途方にくれる。
- 既存のテーブルの文字化けを直そうとするもDBとテーブルのcharsetは変えたが、varchar型カラムのcharsetを変え忘れる。