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

CI 读取中文字段乱码问题

[复制链接]
发表于 2008-3-24 21:09:35 | 显示全部楼层 |阅读模式
CI 读取Mysql 中文字段 出现了乱码,怎么解决呢  谢谢
发表于 2008-3-24 22:13:37 | 显示全部楼层
请设置 Mysql 的编码。
应该是你的数据库编码和网页编码不一致造成的。

config.php/databases.php 里有编码设置。
发表于 2008-3-28 10:47:58 | 显示全部楼层
老大,如果是PHP4下面,请参照
http://codeigniter.org.cn/forums/thread-395-1-1.html
上面的说明。
发表于 2008-3-29 14:45:54 | 显示全部楼层
我遇到过类似的问题



application/config/database.php中这么设置
...
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
会使得从数据库中查出来的中文以utf8格式编码,如果HTML页面是gbk编码就会出现乱码
必须手工对每个字段进行转码,例如:
echo iconv('utf-8', 'gbk', $row->title);

当然这么干是很恐怖的事情,不仅硬编码字符串,而且工作量极大。
但是当我把application/config/database.php改为gbk时,
...
$db['default']['char_set'] = "gbk";
$db['default']['dbcollat'] = "gbk_general_ci";

页面会报告字符集不能设置为gbk,我没打算深入研究mysql的字符集,所以仅仅只是查了一下CI的源码,发现是
system/database/drivers/mysql/mysql_driver.php中的db_set_charset函数出了问题:
PHP复制代码
 
    function db_set_charset($charset, $collation)
    {
        return @mysql_query("SET NAMES '".$this->escape_str($charset)."' COLLATE '".$this->escape_str($collation)."'", $this->conn_id);
    }
 
复制代码

进一步测试,发现
mysql执行查询SET NAMES 'gbk'没有问题,但是执行SET NAMES 'gbk' COLLATE 'something'就会报错,进而影响mysql的查询语言集设置

或许也和我安装mysql时的字符集设置有关,总之我不想纠缠,先解决问题为妙,方法如下:
PHP复制代码
 
    function db_set_charset($charset, $collation)
    {
        //解决设置gbk时报错的问题
        return @mysql_query("SET NAMES '".$this->escape_str($charset)."'", $this->conn_id);
        //return @mysql_query("SET NAMES '".$this->escape_str($charset)."' COLLATE '".$this->escape_str($collation)."'", $this->conn_id);
    }
 
复制代码


在模板、页面和mysql中全部使用gbk编码
发表于 2008-3-29 16:40:35 | 显示全部楼层
只要保持数据库配置文件中的编码和视图文件中的编码保持一致就不会出现乱码。。:)
发表于 2008-6-10 18:03:12 | 显示全部楼层
原帖由 sam 于 2008-3-29 16:40 发表
只要保持数据库配置文件中的编码和视图文件中的编码保持一致就不会出现乱码。。:)

我的数据库是utf8_unicode_ci,
html 申明了
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
复制代码

当然保存也为utf8

但还是出乱码,config/database.php 里也
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_unicode_ci";
这样配了,可是还是出,

[ 本帖最后由 默生 于 2008-6-10 18:04 编辑 ]
发表于 2008-6-10 23:16:02 | 显示全部楼层
把你的关键文件打包发上来看看。
发表于 2008-6-11 09:43:43 | 显示全部楼层

hex 我的包

这个包!

system.rar

317.26 KB, 下载次数: 9

system包

本版积分规则