中文乱码

我建立了一张表,编码为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;

 	}

其实你写入数据和读出数据的页面编码是一样的话

应该不存在乱码问题…