Utf 8 Yii和UTF8显示,UTF8可与mysqli配合使用,但不能与Yii后端配合使用
我一直在努力让Yii正确显示utf8,即使我的apache服务器和数据库都设置为正确显示utf8 更具体地说,我有一组从mysql数据库中提取的汉字/假名数据。作为对它的一个简单测试,我使用mysqli和yii的mvc架构设置了一个查看页面来从中提取数据。使用mysqli拉取时,它会正确显示,而使用yii拉取时,它不会正确显示。这是来自同一个精确的页面,也就是说它来自同一个精确的控制器强制模型后端使用utf8编码是否有遗漏? 图片: 以下是我在yii的mvc内容的视图文件中使用的代码: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内容的视图文件中使用的代码: <
<?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部分,它就工作了。我想我一定是把汉字储存在十六进制之类的东西里了……好吧,不管怎样,再次谢谢你!帮助很大。