lafayu 发表于 2011-2-23 23:45:02

CI框架-导出csv文件中文乱码问题(不修改CI系统核心文件)

我使用CI数据库工具类的 从数据库结果集导出CSV文件 方法,
贴代码:


$this->load->dbutil();
$this->load->helper('file');
$this->load->helper('download');

$this->load->model('Mhome');
$query = $this->Mhome->get_word_csv();
$data = $this->dbutil->csv_from_result($query);
$Date = date("YmdHis");
$Filename = $Date.".csv";
force_download($Filename, $data);



结果导出的csv文件里面的中文出现了乱码。

网上找到的解决方案是:
修改CI框架system的database目录下的DB_utility.php文件,
把 $item 改为 iconv("UTF-8","GB2312//IGNORE",$item)

这种解决方案,等于是认定了CI框架存在BUG,自定义方法已经不能解决问题,所以只好修改ci的系统核心文件。
但是我认为,考虑到项目的可移植性和框架升级,最好还是不要修改ci的系统核心文件。

请问:如何在不修改ci的系统核心文件的前提下,也能让导出的csv文件的中文不出现乱码、正常显示???

lafayu 发表于 2011-2-23 23:50:07

如何在不修改ci的系统核心文件的前提下,也能让导出的csv文件的中文不出现乱码、正常显示???

jeongee 发表于 2011-2-24 09:23:40

CI是老外编的,想中文不乱码,最好还是都是用utf-8编码吧,从页面到数据库。

Hex 发表于 2011-2-24 14:30:57

你应该指定下数据库编码。
这肯定不是 BUG,除非你认为 php 的 mysql 函数有 BUG。
只不过是编码没设置对而已,因为这是老外开发的,所以你需要手动指定下。

lafayu 发表于 2011-2-24 16:24:42

谢谢Hex和版主jeongee!

我已经指定过数据库编码了
贴代码:

$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';


估计是 Microsoft Office Excel 的问题,
如果我用gVim、Komodo IDE、Zend Studio等编辑器或IDE打开 ci导出的csv文件,是没有中文乱码的。
但是用 Microsoft Office 2007 Excel 打开,中文就会有乱码。
(我用的是 Win7 正版 简体中文版操作系统,系统是gbk编码)

这个问题实在是没有解决,
所以我就不用CI的使用CI数据库工具类自带的从数据库结果集导出CSV文件方法,
我自己写了一个导出csv文件的方法,
即把从数据库获取的数据,手工遍历了一遍数组,
并且把所有的中文数据都iconv( "UTF-8","gbk",$data)一下——转化为gbk编码。

这样用Excel打开,就没有中文乱码了。

Hex 发表于 2011-2-26 00:19:38

回复 5# lafayu

呵呵,你用 Excel 啊??那乱码就很正常了,因为比尔盖茨不喜欢 UTF-8,他只喜欢 GB2312,呵呵

as3291363 发表于 2011-3-1 22:50:29

回复lafayu

呵呵,你用 Excel 啊??那乱码就很正常了,因为比尔盖茨不喜欢 UTF-8,他只喜欢 GB2312, ...
Hex 发表于 2011-2-26 00:19 http://codeigniter.org.cn/forums/images/common/back.gif

哈哈哈;P

magicone 发表于 2011-5-25 15:30:41

楼主~你直接把生成的数据
$data=iconv("UTF-8","GB2312//IGNORE",$data);

不就行啦~~~

wait10000y 发表于 2014-3-19 00:16:28

GBK 支持的字符更广泛一些, 并且 $name 里的也需要替换一下哦,不然标题乱码 {:1_1:}

iconv("UTF-8","GBK//IGNORE",$item)

iconv("UTF-8","GBK//IGNORE",$name)

liuxingyu 发表于 2014-7-31 13:03:26

其实解决方案非常简单,该解决方案见博客,如果没有解决请留言
http://blog.csdn.net/xingjigongsi/article/details/38315329
页: [1]
查看完整版本: CI框架-导出csv文件中文乱码问题(不修改CI系统核心文件)