PHP输出CSV文件

PHP输出CSV文件,php,csv,encoding,utf-8,Php,Csv,Encoding,Utf 8,我有一个PHP文件,它可以生成CSV文件(下载)和HTML文件。 当我尝试使用BOM将文件编码为UTF-8时,CSV文件将呈现为UTF-8,但HTML文件将保留两行空格。 当我尝试在没有BOM的情况下将文件编码为UTF-8时,CSV文件将不会呈现为UTF-8,这会导致无意义的代码。 我试图补充一句话: echo "\xEF\xBB\xBF"; 但是,无法正确读取该文件。 另外,我没有使用任何功能:fopen、readfile、。 以下是我的CSV文件标题: header("Content-ty

我有一个PHP文件,它可以生成CSV文件(下载)和HTML文件。
当我尝试使用BOM将文件编码为UTF-8时,CSV文件将呈现为UTF-8,但HTML文件将保留两行空格。
当我尝试在没有BOM的情况下将文件编码为UTF-8时,CSV文件将不会呈现为UTF-8,这会导致无意义的代码。 我试图补充一句话:

echo "\xEF\xBB\xBF";
但是,无法正确读取该文件。 另外,我没有使用任何功能:
fopen、readfile、
。 以下是我的CSV文件标题:

header("Content-type: application/octet-stream");
header("Content-encoding: UTF-8");
header("Content-dispositon: attachment; filename=name.csv");
有人能告诉我如何解决这两个问题吗?我只能解决其中一个问题。

试试,不带BOM:

header("Content-type: application/octet-stream; charset=utf-8");
header("Content-dispositon: attachment; filename=name.csv");

如果您使用的是latin1数据库或ISO/ANSI PHP脚本,请检查数据是否真的是用UTF-8编写的,使用
utf8\u encode
转换
echo
/
print
数据之前的内容。

查看此答案可能会对您有所帮助--上面的问题似乎没有帮助。请查看下面接受的答案和注释,即我的php文件没有BOM。数据库也没有?尝试utf8_编码值以进行双重检查,有时连接到数据库会转换值…不,这与数据库完全无关,因为我只输出一个带有内容处置附件的csv文件。顺便说一下,csv文件输出时编码为UTF-8,没有BOM,我想知道如何使用php将其更改为没有BOM。要删除文件BOM,只需
substr($data,3)
。有时下载是在utf-8中进行的,但是您的应用程序(下载后)没有使用正确的编码读取文件。默认情况下,OpenOffice和Excel读取不同编码的文件。