bibig
(Liushuxun)
1
我后台用的是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兄帮忙看一下,谢谢
qiang
(Qiang Xue)
2
log trace里是不显示参数值的,因为它们是动态绑定的。
你的页面编码是utf-8么?你可以试着把submit的数据保存到一个文件里,然后打开看看是什么编码。
bibig
(Liushuxun)
3
页面编码都是utf-8的
我用Yii::log()将sumbit数据保存到log文件中,可以看到传入的的确是utf8格式的中文(yii生成的log文件默认是gb2312编码,改成utf8编码后可以看到正常的中文log记录)
但save到Mysql的仍然是??
sharehua
(8080268)
4
你的php保存格式是utf-8吗?mysql 运行 status 看看编码状态。
bibig
(Liushuxun)
6
原因找到了
是因为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