星期五, 二月 20, 2009

cakePHP: 中文乱码问题

在默认的配置下,cakePHP 存取的中文字符可以在网页上正常显示,但是在 phpMyadmin 下中文会显示为乱码,已经将数据库、所有的表都设置为 UTF-8,一样无效。

想起平时在 PHP 里处理 MySQL 中文存取的方法,就是在数据库操作前执行一句:

mysql_->query('SET NAME "UTF8");
于是在自己的 controller 里添加上这一句,果然中文在 phpMyAdmin 里显示正常。但取出数据时显示乱码。看来得“修改” AppModel。在自己的 App 目录下添加 app_model.php 文件,内容如下:
class AppModel extends Model {
function __contruct() {
parent::__construct();
$this->query('SET NAMES "utf8"');
}
}

这样,中文乱码消失了。但究竟 cakePHP 有没有更简洁的解决方法呢?于是查看 App 的数据库配置文件(config/database.php),发现有一个 encoding 选项,设置其为 ‘UTF8′,记住!不能是’UTF-8′,否则无效,问题果然解决。

That’s all, have fun :)

没有评论: