
最近CakePHP1.2系列を使ってるんですが、なかなか使える代物になってきました。
以前1.2系列が出現したときはBakeにバグがあり、途中で止まってしまったため「まだたまだ1.2系はだめだな」と思っていたのですが、今になってまぁ使えるレベルになってきたと言えます。
DBの文字化けについてですが、Webプログラマーではプロジェクトの開始と同時に毎回悩まされることかと思います(僕は必ず毎回悩んでいます・・・)。
とまぁ標準的な構成なんですが、CakePHPで登録したデータがphpMyAdminで文字化けする現象に出くわしてしまったので解決法を簡単に書いておきます。
クライアント環境で特別指示されてないのなら極力UTF-8を使うべきです。
SJISやEUCだと、時々魔物に遭遇します。
まぁ、この程度の設定なら誰でもされているかと思います。
しかし・・・!CakePHPのデフォルトの設定だけではDBに登録された際にはアラビア語かのようにきれいに文字化けされて表示されてしまいます。
なにがいけないのか色々と調べた結果、/app/config/database.phpに存在するDATABASE_CONFIGクラスでした。
一般的な設定では、
となっているかと思いますが、この設定に、
と追加してみて下さい。
/cake/libs/model/datasources/dbo/dbo_mysql.phpの110行目付近に書かれているのですが、
とあり、DATABASE_CONFIGの値に'encoding'が存在すればDBにエンコーディングを設定しています。
setEncoding関数はSET NAMES character-setをしているだけなのですが、デフォルトの設定だけでは文字コードが指定されないらしく、phpMyAdminでの文字化けにつながっていたそうです。
上記の設定によってphpMyAdmin上では文字化けは解消されたのですが、MySQLのコンソール上では未だに文字化けしてしまいます・・・。「SET NAMES SJIS」をすれば解消されるのですが、勝手にSJISにエンコードされているということなのでしょうか・・・・・。