不带BOM的UTF-8和UTF-8->;PHP脚本

不带BOM的UTF-8和UTF-8->;PHP脚本,php,apache,utf-8,webserver,Php,Apache,Utf 8,Webserver,我有一个PHP脚本,当我在没有BOM或ANSI的情况下将文件的编码设置为UTF-8时,它可以正常工作 如果我分别使用BOM将文件设置为UTF-8编码,那么PHP文件的输出就会混乱 然而,现在我在尝试在俄罗斯操作系统(Win7,XAAMP)上安装相同的脚本时遇到了一个问题,即Apache或PHP总是使用BOM交付输出,从而将输出搞乱 在这种情况下,更改PHP文件的编码没有帮助 有没有办法将APACHE或PHP设置为无论PHP文件的编码是什么,都不在BOM中使用UTF-8 亲切的问候 下载文件时会添

我有一个PHP脚本,当我在没有BOM或ANSI的情况下将文件的编码设置为UTF-8时,它可以正常工作

如果我分别使用BOM将文件设置为UTF-8编码,那么PHP文件的输出就会混乱

然而,现在我在尝试在俄罗斯操作系统(Win7,XAAMP)上安装相同的脚本时遇到了一个问题,即Apache或PHP总是使用BOM交付输出,从而将输出搞乱

在这种情况下,更改PHP文件的编码没有帮助

有没有办法将APACHE或PHP设置为无论PHP文件的编码是什么,都不在BOM中使用UTF-8


亲切的问候

下载文件时会添加BOM表。。。这可能是一个bug,但是下载一个文件,将内容保存在一个没有添加BOM的文件中。。。然后技巧是下载没有BOM的文件

  //Define filename
  $filename = 'FILE.TXT'; 

  //Remove BOM
  $txt= str_replace("\xEF\xBB\xBF", '', $file_txt);
  //Save File in Server
  file_put_contents($filename, $txt);

  //Start Download of the file
  ob_end_clean();
  header("Content-Type: application/octet-stream; "); 
  header("Content-Transfer-Encoding: binary"); 
  header("Content-Length: ". filesize($filename).";"); 
  header("Content-disposition: attachment; filename=" . $filename);
  readfile($filename);
  die();

php和apache都没有通过magic AFAIK添加BOM。这也是我的想法——在基于欧洲的Windows 7操作系统上安装XAAMP时也是如此,但由于某些原因,我不明白,在使用russion Win 7操作系统时,Apache或PHP神奇地添加了一个BOM表…将内容保存在/tmp文件中并在下载后帮了我很大的忙,因为在线服务swisspost不再接受带有BOM表的文件,而在直接下载csv/文本文件时,浏览器会自动添加BOM表。你为我节省了宝贵的时间。