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

所属分类: CMS教程 / ecshop 阅读数: 1582
收藏 0 赞 0 分享
客户反映,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包含两个文件,使用时需要将Excel/reader.phpinclude进来。修改完之后,问题解决。
更多精彩内容其他人还在看

ecshop实现针对不同支付方式对应不同价格折扣的方法

这篇文章主要介绍了ecshop实现针对不同支付方式对应不同价格折扣的方法,涉及针对Ecshop底层相关逻辑判定代码的修改操作,需要的朋友可以参考下
收藏 0 赞 0 分享

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

ECShop后台用CSV批量上传商品数据包出现一堆乱码,问题相当严重经分析之后发现ECShop读CSV的方式弱爆了,接下来为大家详细介绍下解决方案,感兴趣的各位可以参考下哈
收藏 0 赞 0 分享

ecshop 注册送红包实现代码

有时候我们在使用ecshop过程中,一些推广优惠,这里特分享下实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

ecshop显示商品按月统计销售数量

统计商品出售总数,和半年或者三个月,一个月的出售数量。复制此函数粘贴到根目录下goods.php末尾。然后回到该文件241行给变量赋值
收藏 0 赞 0 分享

调用ecshop商品顶级分类ID我NAME的二种方法

本文总结一下ecshop 获取所在商品的顶级分类ID及NAME两种方法
收藏 0 赞 0 分享

ecshop数据库ecs_stats短时间内会变很大的解决方法

ecs_stats表是记录访问日志的,短时间内会增加很多数据库存储空间,建议清空日志表所有记录,具体操作步骤如下,大家可以参考下
收藏 0 赞 0 分享

ecshop邮件服务器设置方法

这篇文章主要介绍了ecshop邮件服务器设置方法,需要的朋友可以参考下
收藏 0 赞 0 分享

ecshop购物车消失后产品只能单件购买的解决方法(一步购物设置方法)

这篇文章主要介绍了ecshop一步购物设置方法,下面客户碰到的问题也和一步购物设置有关,这里给出解决方法
收藏 0 赞 0 分享

ecshop数据库备份和数据库恢复的步骤

这篇文章主要介绍了ecshop数据库备份和数据库恢复的步骤,需要的朋友可以参考下
收藏 0 赞 0 分享

设置ecshop的wap版本head部分首页标题的方法

如何设置ecshop的wap版本首页标题?在templates下文件有index.html,修改该文件head部分代码就可以了,不会的可以看看本文
收藏 0 赞 0 分享
查看更多