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',
);
}
コメントする