>  기사  >  백엔드 개발  >  淘宝助手导出商品csv读取问题

淘宝助手导出商品csv读取问题

WBOY
WBOY원래의
2016-06-06 20:47:581161검색

导出的csv格式代码不行

<code>$file = fopen("./uploads/333.csv","r");
while(! feof($file))
{
   $data[] = fgetcsv($file);            

}
var_dump($data);
fclose($file);
</code>

浏览器输出中文也乱码,用文件打开csv发现字段并不以逗号隔开

回复内容:

导出的csv格式代码不行

<code>$file = fopen("./uploads/333.csv","r");
while(! feof($file))
{
   $data[] = fgetcsv($file);            

}
var_dump($data);
fclose($file);
</code>

浏览器输出中文也乱码,用文件打开csv发现字段并不以逗号隔开

既然放上了CSV文件就比较好说了, 具体的情况 @lidashuang 已经说的比较全了,我这里补充一点其他的东西。你的CSV文件是用Tab分隔开的(并不是空格),而CSV文件的分隔符是可以自定义的,这个没有问题。PHP的fgetcsv函数是支持自定义分隔符分割的,如果按照以下的示例代码,你就会发现页面可以正常输出的:

<code>$file = fopen('./333.csv', 'r');
while(!feof($file)) {
    @$data[] = fgetcsv($file, 4096, '   ');
}
var_dump($data);
fclose($file);
</code>

你的CSV文件的编码是UTF-8格式的,用Sublime Text和Notepad打开均没有乱码现象。从乱码现象来看你应该是用MS OFFICE Excel打开的。MS家的东西对GBK的编码有着莫名的好感,所以默认UTF-8为乱码了。一个简单的解决办法是把CSV重命名成TXT格式(解决MS无法判断Tab制表分隔符),然后用记事本另存为ANSI格式(实际证明Unicode格式也成)拖到Excel打开就完美了。

答案补充:
你增加了一个浏览器乱码,这个在基于以上答案的情况下也很好理解吧。乱码的唯一原因就是文件和 浏览器/编辑器 的读取编码格式不一致造成的。文件的编码已经确定是UTF-8了,那么浏览器乱码就说明浏览器的编码不是UTF-8。建议在代码中增加<meta charset="utf-8">或者重新设置浏览器的编码方式为UTF-8的话应该就不会乱码了。

并不一定非得用逗号隔开,你给的文件是以空格隔开的。

中文乱码是编码格式不对,我用sublime, vim打开都不乱码,你用什么编辑器打开的?office?

<code>$ file 333.csv
333.csv: UTF-8 Unicode text, with very long lines
</code>

你的文件编码是utf-8的,打开乱码的话,说明你不是以utf-8打开的,设置一下编辑器的编码,设为utf-8

淘宝的csv如果我记得没错是以tab隔开的。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.