我一直在努力让Yii正确显示utf8,即使我的apache服务器和我的数据库都设置为正确显示它。
更具体地说,我从一个mysql数据库中提取了一组汉字/假名数据。作为一个简单的测试,我设置了一个视图页面,用mysqli和yii的mvc架构从中提取数据。当使用mysqli拉动时,它会正确显示,而当用yii拉动它时则没有。这是来自同一个页面,这也意味着它来自同一个控制器。 我错过了强迫模型后端使用utf8编码的东西吗?
图片:http://i.imgur.com/BLmrP.png
这是我在yii的mvc内容的视图文件中使用的代码:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'enablePagination' => false,
)); ?>
然后mysqli就是你所期待的。
任何帮助将不胜感激。
答案 0 :(得分:2)
您必须指定用于数据库连接的字符集。这是在您的主配置文件中完成的(默认情况下为protected/config/main.php
),看起来像这样
return array(
......
'components'=>array(
......
'db'=>array(
'connectionString'=>'sqlite:protected/data/source.db',
'charset'=>'utf8',
),
),
......
);
如果未明确设置charset
参数,则连接通常为latin1,这就是您看到乱码的原因。