PHP:使用Windows编码创建CSV文件

时间:2011-10-26 17:22:12

标签: csv encode fputcsv

我用php创建csv文件。要将数据写入我的csv文件,我使用php函数“fputcsv”。

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

现在有了线索:

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

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

感谢。

3 个答案:

答案 0 :(得分:0)

我认为您无法使用fputcsv设置编码。但是fputcsv会查看语言环境设置,您可以使用setlocale进行更改。

也许您可以将文件直接发送到用户浏览器,并使用标题函数更改contenttype和charset。

答案 1 :(得分:0)

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

如果是字符编码问题,最好的选择是:

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

也用\ r \ n结束换行符,而不只是\ n。

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

答案 2 :(得分:0)

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

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