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/ |
+--------------------------+----------------------------+

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です