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进去。改动完以后,解决问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)