请教mysql乱码问题

我后台用的是mysql数据库,连接的表都是utf8编码格式的,因为是继承之前的项目,里面已经有不少数据。

用yii的脚手架能够很好的显示带中文的内容,但所有用Yii insert or update的中文内容却全部显示为??,在mysql client中查询,也是"??",不知道是哪里没有配置好?

application db项的charset已经设置为utf8

另外,log trace时,怎样可以查看完整的Sql语句,貌似trace里只有带statment的sql,例如:UPDATE User SET username=:username, nickname=:nickname WHERE User.id=4566

>:(有哪位兄弟碰到过类似的问题没?

能否请qiang兄帮忙看一下,谢谢

log trace里是不显示参数值的,因为它们是动态绑定的。

你的页面编码是utf-8么?你可以试着把submit的数据保存到一个文件里,然后打开看看是什么编码。

页面编码都是utf-8的

我用Yii::log()将sumbit数据保存到log文件中,可以看到传入的的确是utf8格式的中文(yii生成的log文件默认是gb2312编码,改成utf8编码后可以看到正常的中文log记录)

但save到Mysql的仍然是??

你的php保存格式是utf-8吗?mysql 运行 status 看看编码状态。

还有建的库是否是utf-8编码。

原因找到了

是因为mysql database编码不是utf8所致

当时图方便,用简单的create database yii_test 语句创建,没有带编码信息。

ALTER DATABASE yii_test DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

用上面的语句修改后问题解决,估计yii是以database的编码为准,而非table(不知道这算不算缺陷)。

所以大家创建库时,一定要带编码信息。

CREATE DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci

Quote

还有建的库是否是utf-8编码。

谢谢,发完才看到你的贴,就是你说的这个原因。