ecshop商品批量上传乱码读CSV的方式问题

ecshop商品批量上传乱码读CSV的方式问题,第1张

ecshop商品批量上传乱码读CSV的方式问题

ECShop后台管理中用CSV大规模上传产品数据包存在大量错误码。经过分析,发现ECShop读取CSV的方法比较弱。接下来,我们将为大家详细讲解解决方案。感兴趣的人可以参考一下。

顾客体现,ECShop后台管理用CSV大批量上传产品数据包出現一堆错码,字段名彻底不一样。剖析了编码后发觉,ECShop读CSV的方法弱爆了。在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']);

用file方式将每排做为一个纪录读入数组$data中。这儿会有一个难题,当宝贝描述里出現换行符,读入便会失败。
再次往下看。ECShop依据上传时挑选的编码种类,要不是UTF-8则会强制转换成UTF-8。但也仅仅适用汉语GB2312编码,顾客上传的数据包确是Unicode编码(顾客用淘宝助理导出来),結果就错码了。

复制代码编码以下:
//变换编码
if(($_POST['charset']!='UTF8')&&(strpos(strtolower(EC_CHARSET),'utf')===0))
{
$line=ecs_iconv($_POST['charset'],'UTF8',$line);
}

EC的编码变换果然是奇怪,好好的mb库闲置不用,硬要自身搞一套。用phpExcelReader导进Excel文档就工作中得非常好,编码也不存在的问题。因此,把这一段编码改了。

复制代码编码以下:
/*将文档按行读入数组,一行行开展分析*/
$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[0]['cells'];

phpExcelReader包括2个文档,应用时必须将Excel/reader.phpinclude进去。改动完以后,解决问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/772320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存