首页 > 网站 > 建站经验 > 正文

手把手教你解决ECshop导入淘宝数据包乱码问题

2024-04-25 20:45:39
字体:
来源:转载
供稿:网友

公司打算将重点从淘宝转移到B2C上边,于是把我招进来了,经过两个月的时间,B2C网站搭建起来,但是在导入淘宝数据包的时候出现问题了,那就是数据乱码,在网上找了很久都没有找到真正可以解决的办法,那就只能自己搞了,还好最好被我捣鼓出来了。

我用的是ecshop2.73的版本,其他版本没有验证,本人只保证同版本的可以用。

前期准备:

1、利用淘宝助手导出一个数据包(.csv),不要一次全部商品导出,最好是将数据包控制在1M左右,因为ecshop对上传文件有限制。

2、备份网站程序中的goods_batch.php。如果你对自己的水平有足够的信心,可以不备份直接在源文件上修改,否则请备份。

3、文件编辑器。

开始修改:

1、用编辑器打开文件goods_batch.php,文件在admin文件夹下,找到

$data=file($_FILES['file']['tmp_name']);

并将此行注释掉。在下边加上  

$data0=mb_convert_encoding(file_get_contents($_FILES['file']['tmp_name']),"utf-8","UTF-16LE"); 

utf-8是我ecshop的版本编码,如果你的是gbk则这里是gbk。

2、继续添加代码

$data=str_replace("/"/"","/"",$data0);

$data=explode('米莱旗舰店',$data);

米莱旗舰店是我店铺的名字,将这个换成你店铺的名字即可。

3、这里开始要特别注意,因为csv文件的开头有一部分说明,所以要针对首行特别处理。

if($k==0){
            $goods_name_arr = explode('"',$line_list[98]);
            $goods_name = $goods_name_arr[1];
            $shop_price = $line_list[105];
            $goods_number = $line_list[107];
            $imgsstr = $line_list[126];
            $goods_desc =str_replace("/"","'",substr($line_list[118],1,strlen($line_list[118])-2));
             }else{$goods_name_arr = explode('"',$line_list[10]);
            $goods_name = $goods_name_arr[1];
            //$goods_name = trim($line_list[10],'"');
            $shop_price = $line_list[17];
            $goods_number = $line_list[19];
            $imgsstr = $line_list[38];
            $goods_desc = str_replace("/"","'",substr($line_list[30],1,strlen($line_list[30])-2));
             }

这里的$line_list[]可能会因为店铺商品属性不一样导致数据提取错误,可以先print_r($line_list)然后修改错误的数组下标。

4、到了这里数据的提取基本上完成了,下面就要对提取的数据进行处理并赋值给数组。其实也只是图片的数据需要处理一下,具体如下:

$imgasd=str_replace("/"","",$imgsstr);
            $imgasd=explode(";",$imgasd);
            foreach($imgasd as $ks=>$vs){
            if($ks!=count($imgasd)-1){
            $nv=explode("|",$vs);
            $in=explode(":",$nv[0]);
            $imgs_u.=$in[0].".jpg;";
              }
            }
            $arr['original_img'] = $imgs_u;

 5、最后要处理的数据就是图片的路径。找到if (!empty($field_arr['original_img']))的位置,有这里开始注释,一直到//修改商品图这里,然后再注释//添加商品相册图下面的if代码。

此方法保证可用于ecshop2.73,我公司的b2c已经使用这个方法成功导入了淘宝的商品数据。

如果有不明白的或者不会修改需要帮助的可以访问http://www.milevip.com,如果有朋友发现更好的方法也欢迎交流。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表