使用应用语言(PHP)导出csv文件出现乱码的问题及解决办法

 2024-03-03 09:15:24  阅读 0

为了给运筹学的同学提供数据支持,需要导出数据文件,通常是常见的CSV逗号分隔文件,可以用Excel打开。

首先导出一个标准的csv格式文件,采用UTF-8编码,无BOM头,但是用Excel打开时,csv出现乱码。

此时,考虑是否可以手动指定Excel打开的文件的编码:

File--CSV,指定UTF8编码、 、分隔符和",代码不再乱码,但是除了字段内容换行之外都可以工作,这意味着CSV解析会失败。

无法解决,我改变主意,分析了Excel本身导出的utf8编码的csv文件。

上面明明写着With BOM,而且Ya生成的utf8文件是有BOM头的! (对于UTF8文件,不包含BOM头是业界比较标准的,微软仍然依赖BOM)

PHP生成csv时,首先输出BOM头。 导出的csv文件可以直接用Excel打开,完美解决乱码问题!

具体代码(可能需要绕过防火墙):

PHP 导出 csv

PHP输出BOM头:

echo "\xEF\xBB\xBF";

题外话:

在解决这个问题的时候,我又遇到了一个小问题。 PHP 的命令结束标志 ?> 在导入文件时会生成额外的空白字符。 请参阅:注意,在某些情况下会导致错误。

例如本文中,如果在输出BOM头之前输出一个空白字符,那么大多数软件将无法识别带有BOM头的文件。

标签: 导出 文件 编码

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码