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

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

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

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前添加:

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

方法二:

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

protected function _getExportHeaders(){

}

方法 换成

protected function _getExportHeaders()
{
$row = array();
foreach ($this->_columns as $column) {
if (!$column->getIsSystem()) {
$row[] = “\xEF\xBB\xBF”.$column->getExportHeader();
}
}
return $row;
}

Leave a Reply

Your email address will not be published. Required fields are marked *