用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3315|回复: 3
收起左侧

CI 处理数据库的乱码问题

[复制链接]
发表于 2009-2-22 14:00:43 | 显示全部楼层 |阅读模式
mysql 5.0.51, debian lenny 2.6.28
mysqld启动脚本已经设置为utf8,
create database和create table都是 default character set utf8 collate default utf8_general_ci的
vim编辑的文件默认就是utf8的,php的meta也显式地声明为utf8

但是查询字串如果包含中文就无法执行,比如 where('cate', '新闻'),改成news就可以
但是,进一步的,如果是字段里包含中文就显示乱码,

试过在mysql 终端里访问,显示正确,但是set names 'utf8'就有变成乱码,原来默认是latin1的,
彻底迷惑了,难道我先是声明的sql还不能生成utf8字符集的数据库吗

看到http://codeigniter.org.cn/forums/thread-977-1-1.html里,插入数据使用的不是汉字,而是utf8的原始编码,也许是这样的问题,或者谁遇到过,不吝赐教,谢谢
发表于 2009-2-22 18:46:44 | 显示全部楼层
/etc/msyql/my.cnf 里面有字符编码设定的,你有没有改为utf8
~/.mf.cnf  里面也有连接时用的字符编码,你有没有改为utf8

两个都设为utf8后,再尝试新建一个database,看有没有乱码。。
发表于 2009-2-22 20:06:04 | 显示全部楼层
乱码问题其实根本都是编码不一致造成的,看一下哪里造成的不一致。
 楼主| 发表于 2009-2-22 23:13:34 | 显示全部楼层
最后在初始sql里加上set names 'utf8',总算解决,还不知道如果插入或者更新的话是不是会有问题,是不是还应该在调用之前加上
mysql_query('set names 'utf8');

本版积分规则