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

[其它 Other] csv_from_result导出csv乱码的一个解决办法

[复制链接]
发表于 2014-8-15 14:53:52 | 显示全部楼层 |阅读模式
本帖最后由 qichengzx 于 2014-8-15 14:55 编辑

正好最近项目要用到导出csv,在论坛搜索也没找到乱码的解决办法,看到的几个帖子说用iconv('GB2312', 'UTF-8', $data);转也没成功。
今天试了下用mb_convert_encoding( $data,"GB2312", "UTF-8");成功导出并且在excel打开也不乱码了。Linux没装软件只能表示暂时不清楚
model代码:
PHP复制代码
 
public function export(){
 
        $query = $this->db->query("SELECT * FROM xxx where id = 1");
       
        $data = $this->dbutil->csv_from_result($query);
        return $data;
 
}
 
复制代码

C 代码
PHP复制代码
 
public function export(){
 
        $this->load->dbutil();
        $this->load->helper('file');
 
        $data = $this -> Ajax_model -> export();
 
        $delimiter = ",";
        $newline = "\r\n";
        @ob_end_clean();
 
        //print_r($data);
        $data1 = mb_convert_encoding( $data,"GB2312", "UTF-8");
        //print_r($data1);
        if ( ! write_file('./test.csv', $data1)){
             echo 'Unable to write the file';
        }else{
             echo 'File written!';
        }
}
 
复制代码


发表于 2014-8-18 12:19:32 | 显示全部楼层
应该 iconv 比 mb_convert_encoding 更好一些。
 楼主| 发表于 2014-8-30 13:05:26 | 显示全部楼层
Hex 发表于 2014-8-18 12:19
应该 iconv 比 mb_convert_encoding 更好一些。

嗯,我看别人都是用iconv,但是我写的时候总是出错,也许还有其他原因吧。

本版积分规则