我建立了一张表,编码为utf8_unicode_ci,使用默认crud提交中文时,数据库记录为乱码,应该如何操作?
db设置里我已经加了一个charset=utf8的设置。
我建立了一张表,编码为utf8_unicode_ci,使用默认crud提交中文时,数据库记录为乱码,应该如何操作?
db设置里我已经加了一个charset=utf8的设置。
我在mysql的my.cnf配置里加入了default-character=utf8解决这个问题
设置CDbConnection的charset属性即可。
‘db’=>array(
'connectionString'=>'mysql:host=localhost;dbname=study',
'username'=>'root',
'password'=>'jeri',
'charset'=>'utf8',//use charset as utf8
'enableParamLogging'=>'true',//to log the parameter value
),
在main.php中设置也可以的。
mysql 库 最好用utf-8
如果数据库字段的 编码不是utf8的 ,会乱码 ,可以在view里用 iconv(‘gbk’,‘utf-8’,$model->SpeechText)
转码
我现在的项目就是这样处理的 ,主要原因是有vb.net 的程序使用gbk编码向数据库里写数据,为了不乱码,我只能用下面的方法转码处理了
<td><?php echo CHtml::encode(iconv('gbk','utf-8',$model->SpeechText)); ?></td>
当然,为了写入数据时也是gbk ,model里需要做一些处理
protected function beforeSave()
{
$this->SpeechText = iconv('utf8','gbk',$this->SpeechText);
return true;
}
其实你写入数据和读出数据的页面编码是一样的话
应该不存在乱码问题…