今回、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値あった気がするけど、いつのまにか削除しちゃったのかしら。。

とりあえずこれで解決。