新闻中心
Ecshop使用网站那后台批量上传CSV格式的商品数据包的出现乱码
无忧小编深深的体会到使用一款比较完美的开源程序来搭建商城也不是一件那么容易的事情,商城搭建好了,首先要选好适合自己商城展现的模板,然后就是在网站后台发布商品的详细参数信息,例如在添加每一款新商品的时候都需要填写商品名称,商品货号,品牌,价格,颜色,型号,商品的缩略图等等。这样发布只是针对一个一个的更新产品的时候采用,但是试想下如果一次需要发布上千件商品这样做是不是极大的浪费了时间,效率太低了。因此很多客户使用了是先把商品的这些信息都收集好然而创建一个Excel表格,然后把收集好的数据放到这个表格里,再另存为CSV格式的数据包。建站的站长朋友们都知道CSV格式的数据包是可以使用mysql数据库导入的,但是Ecshop这款程序非常强大在网站后台就可以把这个数据包导入了。如下图所示:
[caption id="attachment_15980" align="alignnone" width="554"] ecshop后台截图[/caption]
这个功能的确很强大,但是Ecshop开源程序毕竟是开源的,很多功能的使用还是需要自己二次开发的,小编就遇到了很多站长在使用批量上传商品的时候出现了乱码现象。字段完全和数据库中的对不上,可以说是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[0]['cells'];
因为原来程序代码中phpExcelReader包含两个文件,使用时需要将Excel/reader.phpinclude读入进来,否则当然数据会出现读不完整导致乱码等现象出现了,修改好了上传覆盖之前的文件然后再登陆网站后台更新下缓存就可以解决这个问题了。
无忧主机相关文章推荐阅读:
ECSHOP删除订单时提示“以下订单无法被移除”
ECSHOP添加角色管理的时候,出现错误解决方法
ECSHOP客户下单后如何删除或隐藏购物车中的商品属性的价格
ECSHOP出现/LANGUAGES//COMMON.PHP) [FUNCTION 问题解决方法
本文地址:https://www.51php.com/ecshop/15979.html






