Php 服务器之间关于UTF-8 BOM的差异

Php 服务器之间关于UTF-8 BOM的差异,php,apache,csv,character-encoding,byte-order-mark,Php,Apache,Csv,Character Encoding,Byte Order Mark,我的应用程序是在安装了PHP5.4的WAMP上开发的,完全配置了UTF-8 现在我需要生成一个.csv文件。对于我无法控制的要求,编码必须为ISO-8859-1 它们是非常小的表,我用 iconv(“UTF-8”、“ISO-8859-1//Translatit”、$每个数据) 然后,我下载带有以下内容的文件: header('Content-Type: text/csv; charset=ISO-8859-1'); header('Content-Disposition: attachement

我的应用程序是在安装了PHP5.4的WAMP上开发的,完全配置了UTF-8

现在我需要生成一个.csv文件。对于我无法控制的要求,编码必须为ISO-8859-1

它们是非常小的表,我用

iconv(“UTF-8”、“ISO-8859-1//Translatit”、$每个数据)

然后,我下载带有以下内容的文件:

header('Content-Type: text/csv; charset=ISO-8859-1');
header('Content-Disposition: attachement; filename="'.$filename.'";');
echo $string_with_all_data;
exit(0);
嗯,在我的开发服务器中没有问题,文件是根据需要生成的。但在生产服务器中,生成的.csv在开始时包含UTF-8 BOM

理论上,两台服务器是相同的。但是,其中一个生成的csv开头有臭名昭著的3个字符(ï»),而另一个则没有。这两个csv都在ISO-8859-1中正确编码

我尝试了上千种方法,但在生成的两个文件中,结果总是不同的。(fputcsv,ob_start(),内容类型:bla bla等)


我想php或apache配置中一定存在一些改变输出的差异,但我找不到它。

BOM从来不是由php“生成”的。如果它在脚本的输出中,那是因为脚本文件本身有一个BOM表,该BOM表被发送到输出,因为它位于开头
@lafor:实际上我应该怎么做?