CakePHP1.3、MySQL5の環境下で、DBにアクセスして情報を取得したのですが、どうしても日本語が文字化けしてしまいます。
$result = $this->find('all', array( 'conditions' => array( 'Sample.id' => $id ), ));
例えば、このようにしてデータを取得しているのですが、2バイト文字だけどうしても化けます。ちなみにMySQLは文字コードUTF8の設定でテーブルに情報を保持しています。
原因は単純にデータベース設定でエンコードをUTF8に指定していないだけでした。
CakePHPでMySQLを利用する場合には、明示的にエンコードを指定する必要があるようです。
具体的には以下のように「app/config/database.php」に「encoding」を設定することで、問題を文字化けを回避できます。
class DATABASE_CONFIG { var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'database_name', 'prefix' => '', 'encoding' => 'utf8', ); var $test = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'test_database_name', 'prefix' => '', 'encoding' => 'utf8', ); }
コメントする