レンタルサーバの場合、あまりこの現象に遭遇しないのですが、自分でサーバやデータベースを構築したりすると、この現象が起こることがあります。日本語が全部???(はてなマーク)になってしまうこの現象。今回現象が起こった環境、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値あった気がするけど、いつのまにか削除しちゃったのかしら。。
とりあえずこれで解決。