CakePHPチュートリアルで文字化け
CakePHPを触り始めた。とりあえずsymfonyを勉強した時と同じようにチュートリアルから始める事にした。
環境
- CakePHP 1.2.3.8166
- PHP 5.1.6
- MySQL 5.1.34
ブログの記事を表示するところで化ける。コンソールからselect * from postsとかやるとちゃんと文字が表示されるのになぁ、と思って以下のコマンドを試してみると・・・
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
あー、これが原因なのね。
MySQLのサイトからダウンロードしたRPMだと/etc/my.cnfが無かったので、とりあえずサンプルのやつをコピーして、使う事にした。
cp /usr/share/doc/MySQL-server-community-5.1.34/my-medium.cnf /etc/my.cnf
その上で、my.cnfの[mysqld]セクションに以下の2行を追加。
default-character-set=utf8
skip-character-set-client-handshake
後はMySQLの再起動、データの再投入をしたらOKだった。ちなみに再起動後のcharcter set関係の値は以下の通り。
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+