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文件的中文不出现乱码、正常显示??? 如何在不修改ci的系统核心文件的前提下,也能让导出的csv文件的中文不出现乱码、正常显示??? CI是老外编的,想中文不乱码,最好还是都是用utf-8编码吧,从页面到数据库。 你应该指定下数据库编码。
这肯定不是 BUG,除非你认为 php 的 mysql 函数有 BUG。
只不过是编码没设置对而已,因为这是老外开发的,所以你需要手动指定下。 谢谢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打开,就没有中文乱码了。 回复 5# lafayu
呵呵,你用 Excel 啊??那乱码就很正常了,因为比尔盖茨不喜欢 UTF-8,他只喜欢 GB2312,呵呵 回复lafayu
呵呵,你用 Excel 啊??那乱码就很正常了,因为比尔盖茨不喜欢 UTF-8,他只喜欢 GB2312, ...
Hex 发表于 2011-2-26 00:19 http://codeigniter.org.cn/forums/images/common/back.gif
哈哈哈;P 楼主~你直接把生成的数据
$data=iconv("UTF-8","GB2312//IGNORE",$data);
不就行啦~~~ GBK 支持的字符更广泛一些, 并且 $name 里的也需要替换一下哦,不然标题乱码 {:1_1:}
iconv("UTF-8","GBK//IGNORE",$item)
iconv("UTF-8","GBK//IGNORE",$name) 其实解决方案非常简单,该解决方案见博客,如果没有解决请留言
http://blog.csdn.net/xingjigongsi/article/details/38315329
页:
[1]