php导入csv文件输出是乱码,怎么解决

如图:按照php手册中的方法导入csv文件,输出是乱码,然后加了iconv函数,就是$data=iconv('UTF-8','GBK//IGNORE',$data);这句... 如图:

按照php手册中的方法导入csv文件,输出是乱码,然后加了iconv函数,就是$data = iconv('UTF-8', 'GBK//IGNORE', $data);这句,之后还是有问题,打印出iconv() expects parameter 3 to be string, array given in,我在网上找到的方法都是这么写的呀,求详细告知!谢谢!
展开
 我来答
zhuimengren361
推荐于2016-07-04 · 知道合伙人软件行家
zhuimengren361
知道合伙人软件行家
采纳数:96 获赞数:188
毕业于湖南大学计算机专业,从事6年的开发和技术管理经验,现任上海开亨信息科技公司技术总监

向TA提问 私信TA
展开全部
 //这是我前几天回答过的一个问题下面以读取淘宝csv文件为例
             if($result){        //如果上传成功了,这是文件路径
                 if (!($handle = fopen_utf8($result, "r")) === FALSE){  //调取下边函数fopen_utf8;
                        $errorArr = array();
                        $i=0;
                       while (($cols = fgetcsv($handle, 1000, "\t")) !== FALSE) {  
                                                  ++$i;
                            if($i<4) continue;
                           $taobaolmsx = $cols[21];//宝贝属性;
                           $taobaoxxsx = $cols[30];//销售属性;
                           $goodsBn = $cols[33];//商家编码;
 
                       }  
                       fclose($handle);                       
                 }
 
                    unlink($result);
                            }else{
                    echo 'file upload error';exit;
            }
 
/*读取csv文件用 */
    function fopen_utf8($filename){  
        $encoding='';  
        $handle = fopen($filename, 'r');  
        $bom = fread($handle, 2);  
        rewind($handle);  
        
        if($bom === chr(0xff).chr(0xfe)  || $bom === chr(0xfe).chr(0xff)){  
                // UTF16 Byte Order Mark present  
                $encoding = 'UTF-16';  
        } else {  
            $file_sample = fread($handle, 1000) + 'e'; //read first 1000 bytes  
            // + e is a workaround for mb_string bug  
            rewind($handle);  
        
            $encoding = mb_detect_encoding($file_sample , 'UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP');  
        }  
        if ($encoding){  
            stream_filter_append($handle, 'convert.iconv.'.$encoding.'/UTF-8');  
        }  
        return  ($handle);  
    }
追问

执行到while (($cols = fgetcsv($handle, 1000, "\t")) !== FALSE)时$cols为false,不晓得是什么情况,代码如图:


请指教~谢谢!!

追答

下载这个文件测试,用我发你的代码,先看能不能成功。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式