cybn 发表于 2016-11-2 18:11:30

cshop后台批量上传CSV格式的商品数据包的出现乱码

后台自带的批量导入CSV数据包功能给很多站长带来了很多方便,但是也有很多站长在使用批量上传商品的时候出现了乱码现象。字段完全和数据库中的对不上,可以说是Ecshop读CSV格式太弱了,那么该如何才能顺利的导入呢?

花了半天的功夫研究出使用file方法将每行作为一个记录读入数组$data中。就可以解决了。但是ECShop根据上传时选择的编码类型,如果不是UTF-8则会强制转换成UTF-8。但也只是支持中文GB2312编码,客户上传的数据包却是Unicode编码。还会有乱码现象还要在上传后让它自动转化为UTF-8格式就可以了。具体的步骤如下:

首先连接FTp软件找到在admin/目录下找到good_batch.php这段代码 如下:

/*将文件按行读入数组,逐行进行解析*/

$line_number=0;

$arr=array();

$goods_list=array();

$field_list=array_keys($_LANG[‘upload_goods’]);//字段列表

$data=file($_FILES[‘file’][‘tmp_name’]);

//转换编码

if(($_POST[‘charset’]!=’UTF8′)&&(strpos(strtolower(EC_CHARSET),’utf’)===0))

{

$line=ecs_iconv($_POST[‘charset’],’UTF8′,$line);

}

修改为以下代码:

/*将文件按行读入数组,逐行进行解析*/

$line_number=0;

$arr=array();

$goods_list=array();

$field_list=array_keys($_LANG[‘upload_goods’]);//字段列表

$reader=newSpreadsheet_Excel_Reader();

$reader->setOutputEncoding(‘utf-8′);

$reader->read($_FILES[‘file’][‘tmp_name’]);

$data=$reader->sheets[‘cells’];

因为原来程序代码中phpExcelReader包含两个文件,使用时需要将Excel/reader.phpinclude读入进来,否则当然数据会出现读不完整导致乱码等现象出现了,修改好了上传覆盖之前的文件然后再登陆网站后台更新下缓存就可以解决这个问题了。


%
页: [1]
查看完整版本: cshop后台批量上传CSV格式的商品数据包的出现乱码