Home > Backend Development > PHP Tutorial > 淘宝助手导出商品csv读取问题

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

WBOY
Release: 2016-06-06 20:47:58
Original
1181 people have browsed it

导出的csv格式代码不行

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

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

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

回复内容:

导出的csv格式代码不行

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

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

浏览器输出中文也乱码,用文件打开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>
Copy after login

你的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>
Copy after login

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

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

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template