レンタルサーバの場合、あまりこの現象に遭遇しないのですが、自分でサーバやデータベースを構築したりすると、この現象が起こることがあります。日本語が全部???(はてなマーク)になってしまうこの現象。今回現象が起こった環境、CakePHP + MySQLの場合の対応方法をメモ。
今回、AWSのEC2を使用していて、EC2内でCakePHP + MySQLを動かしていたんです。
そしたら、ローカル開発環境ではちゃんと表示されていた日本語が、すべて???(はてなマーク)になってしまいました。
DB(MySQL)から呼び出される文字列だけ
原因は容易に想像できました。
DBから呼び出した情報が表示される部分だけ???(はてなマーク)だったので、CakePHPのDBデータの呼び出し時のエンコーディングに問題があるというのは分かってました。
ただ、CakePHPの場合、どうやってエンコーディングを変更するのかと。
対処法
対処法は簡単でした。データベース設定ですぐに直ります。
app/config/database.phpを開きます。
public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'username', 'password' => 'password', 'database' => 'db_name', 'prefix' => 'prefix_', 'encoding' => 'utf8',// この一行を追加 );
CakePHP初期値で、このencoding値あった気がするけど、いつのまにか削除しちゃったのかしら。。
とりあえずこれで解決。