Utf 8 Yii和UTF8显示,UTF8可与mysqli配合使用,但不能与Yii后端配合使用

Utf 8 Yii和UTF8显示,UTF8可与mysqli配合使用,但不能与Yii后端配合使用,utf-8,yii,Utf 8,Yii,我一直在努力让Yii正确显示utf8,即使我的apache服务器和数据库都设置为正确显示utf8 更具体地说,我有一组从mysql数据库中提取的汉字/假名数据。作为对它的一个简单测试,我使用mysqli和yii的mvc架构设置了一个查看页面来从中提取数据。使用mysqli拉取时,它会正确显示,而使用yii拉取时,它不会正确显示。这是来自同一个精确的页面,也就是说它来自同一个精确的控制器强制模型后端使用utf8编码是否有遗漏? 图片: 以下是我在yii的mvc内容的视图文件中使用的代码: <

我一直在努力让Yii正确显示utf8,即使我的apache服务器和数据库都设置为正确显示utf8

更具体地说,我有一组从mysql数据库中提取的汉字/假名数据。作为对它的一个简单测试,我使用mysqli和yii的mvc架构设置了一个查看页面来从中提取数据。使用mysqli拉取时,它会正确显示,而使用yii拉取时,它不会正确显示。这是来自同一个精确的页面,也就是说它来自同一个精确的控制器强制模型后端使用utf8编码是否有遗漏?

图片:

以下是我在yii的mvc内容的视图文件中使用的代码:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'enablePagination' => false,
)); ?>

然后mysqli就是你所期望的


任何帮助都将不胜感激

必须指定用于数据库连接的字符集。这是在主配置文件中完成的(默认情况下为
protected/config/main.php
),看起来像这样

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'connectionString'=>'sqlite:protected/data/source.db',
            'charset'=>'utf8',
        ),
    ),
    ......
);
如果未显式设置
charset
参数,则连接通常为拉丁1,这就是您看到乱码的原因


此外,还有一个。

已经将charset设置为utf8,甚至还加入了
'initSQLs'=>数组('set names utf8')
(尽管我已经将mysql名称(包括连接)默认设置为utf8)。还通读了维基,做了一切。或者我甚至应该检查并将yii核心文件更改为没有BOM的UTF-8?我以为下载后会是这样。不,没必要。我能想到的另一件事是页面的编码。检查你的标题。如果这不能解决问题,那么您的数据实际上可能采用了其他编码方式。头肯定会被发送,因为当我将语言更改为“ja”时,假名/汉字会同时显示在mysqli fetched表中。数据可能也是UTF-8,因为从mysqli正确显示的数据与yii获取的数据相同。哦,我检查了表格的CREATE语句…肯定是utf8。我能想到的唯一一件事是,控制器中的
cactivedaptaprovider
或一般模型中肯定缺少某些内容。只能在数据库配置文件中设置连接编码。mysqli是否也使用utf-8连接?也许不是,而且数据确实是拉丁文的。你能用类似于
phpmyadmin
的东西检查一下这个表吗?如果可以的话,你能正确地看到文本吗?还是文本也被弄乱了?啊!非常感谢你。我认为我的数据库连接是utf8,这是一个错误的假设。我不太清楚我最初存储数据到底做了什么,但一旦我在yii中删除了数据库连接的charset和initSQL部分,它就工作了。我想我一定是把汉字储存在十六进制之类的东西里了……好吧,不管怎样,再次谢谢你!帮助很大。