西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > magento教程 >

Magento导出数据文件CSV中文乱码问题解决

时间:2013-12-14 23:12来源:未知 作者:好模板 点击:
Magento大部分数据可以导出CSV的格式,但Magento导出的CSV默认编码为UTF-8并且没有BOM头,Excel打开带中文的UTF-8编码的CSV时,因为没有BOM头,默认显示为GBK编码所以中文会显示成乱码。 解决这

Magento大部分数据可以导出CSV的格式,但Magento导出的CSV默认编码为UTF-8并且没有BOM头,Excel打开带中文的UTF-8编码的CSV时,因为没有BOM头,默认显示为GBK编码所以中文会显示成乱码。

解决这个问题的方法有两种:
方法一:
在导出的过程中将编码转成GBK再输出,对字符串转编码可以使用ICONV函数,MagenTo里可以参考添加这个方法:
文件:app/code/core/Mage/Adminhtml/Block/Widget/Grid.php

1
2
3
4
5
6
7
8
9
10
11
protected function d_encodeUTF8($array){ 
 
          foreach($array as $key=>$value){ 
 
             $array[$key] = !is_array($value)?iconv("UTF-8","GBK",$value):$this->d_encodeUTF8($array[$key]); 
 
          } 
 
          return $array; 
 
       }

然后在_getExportHeaders()里的return $row前添加:

1
$row = $this->d_encodeUTF8($row);

方法二:
为输出的UTF8编码CSV文件添加BOM头
将文件:app/code/core/Mage/Adminhtml/Block/Widget/Grid.php里的

1
2
3
protected function _getExportHeaders(){
 
}

方法 换成

1
2
3
4
5
6
7
8
9
10
protected function _getExportHeaders()
    {
        $row = array();
        foreach ($this->_columns as $column) {
            if (!$column->getIsSystem()) {
                $row[] = "\xEF\xBB\xBF".$column->getExportHeader();
            }
        }
        return $row;
    }

即可

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(1)
100%
------分隔线----------------------------
栏目列表
热点内容