php读取 unicode编码的 csv 文件为utf-8编码

php读取 unicode编码的 csv 文件为utf-8编码,第1张

你要输出的内容前先输出"\xEF\xBB\xBF",例如:你要输出的内容保存在$content里

$content = "\xEF\xBB\xBF".$content//添加BOM

确保输出$content前没有任何其他东西输出。

何为BOM,它是Windows用来标记文本文件的编码方式的,你可以在网上查查相关BOM资料。

 //这是我前几天回答过的一个问题下面以读取淘宝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)  

    }

可以尝试在获得提交的CSV之后再对数据编码一次

提及CSV之后你不是要通过虚幻去逐行读取数据吗,

在逐行读取数据的之前,先对这一行 的所有数据进行二次编码


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7082559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存