CakePHP で MySQL で文字化けする場合の解決方法

CakePHP で ???????? って文字化けするときは SET NAMES utf8 とすると良いです。

1
mysql_query("SET NAMES utf8");

しかし CakePHP ではもっと簡単に設定する方法があります。
CakePHP MySQL で文字化けを防ぐ設定 | Sun Limited Mt.

database.php で ‘encoding’ => ‘utf8′ とすれば良いみたいです。

1
2
3
4
5
6
7
8
9
10
var $default = array(
    'driver' => 'mysql',
    'connect' => 'mysql_connect',
    'host' => 'localhost',
    'login' => 'user',
    'password' => 'password',
    'database' => 'dbname',
    'prefix' => '',
    'encoding' => 'utf8'
);

CakePHP 楽ですね。早く使いこなせるようになりたいものです。

追記: SET NAMES utf8 には脆弱性がある

というわけで以下のページを参考にしたところ PHP 5.2.3 移行は以下のコードで良い様です。
MySQLとPHPの連携:: set names utf8以外の文字化け対策 – KennyQiのPHPメモと息抜きブログ

1
mysql_set_charset('utf8');

かなり詳しくまとめているページがありますので紹介しておきます。
PHPからSET NAMESを使わない方が良い理由と対策まとめ | twk @ ふらっと

コメント

コメントは受け付けていません。