2011-10-26 30 views
0

我使用php创建csv文件。要将数据写入我的csv文件,我使用php函数“fputcsv”。PHP:使用windows编码创建CSV文件

这是问题: 我可以用Excel正常打开创建的文件。但我不能将文件导入到一个商店系统(在这种情况下是“商店”)。它表示类似“无法读取数据”。

现在来的线索:

如果我打开创建的文件,并选择“另存为”,然后选择“CSV(逗号分隔)”的类型,这个文件可以导入到shopware。我读了一些关于用于编码数据的php函数“mb_convert_encoding”,但它无法解决问题。

如果你能帮助我,我将非常高兴。

谢谢。

回答

0

我认为你不能使用fputcsv设置编码。但是fputcsv会查看语言环境设置,您可以使用setlocale更改该设置。

也许你可以直接发送你的文件到用户浏览器,并使用改变contenttype和charset与头功能。

+0

我没有设置fputcsv的编码类型。我只是编码输入数组的值,fputcsv将其作为参数。该文件不是用于下载,而是用于启动导入到餐具的cronjob。 – user963942

0

如果不知道有关系统的更多信息,则无法回答。很可能它与字符编码无关。这可能是错误的列数或列标题不正确的问题。

如果它是一个字符编码的问题,最好的办法是:

$new_str = mb_convert_encoding($str, 'Windows-1252', 'auto'); 

也结束与\ r \ n,而不是仅仅的\ n换行符。

如果这不起作用,您需要检查软件文档。

+0

列的数量在每一行都是正确的,我刚刚验证过。不幸的是,建议的编码并没有解决问题。我对EOL角色没有影响,因为它是由fputcsv自动编写的。哪些软件文档是你的意思? – user963942

0

感谢您的输入。 我通过用fwrite替换fputcsv解决了这个问题。然后,我只需要将“\ r \ n”(感谢wmil)添加到行的末尾,并且生成的文件可以被商店读取。

显然,fputcsv函数使用\ n而不是\ r \ n作为EOL字符。