php 5.6.7固件与fputs utf-8编码

php 5.6.7固件与fputs utf-8编码,php,utf-8,fwrite,fputs,Php,Utf 8,Fwrite,Fputs,我有一个xml数据,它作为url中的字符串发送 例如url?数据=字符串 这被发送到另一个我无法控制的服务器,它们使用FPUT,所以我不能简单地更改为fwrite。我正试图找出如何使FPUT工作,以便我可以给他们修复。我的测试环境使用PHP5.6.7 字符串中包含字符á(alt+0225) 使用此代码,当我在记事本++中查看文件时,字符仍然为空 $datafile = fopen("datafile.txt", "a"); foreach (getallheaders() as $name

我有一个xml数据,它作为url中的字符串发送

例如url?数据=字符串

这被发送到另一个我无法控制的服务器,它们使用FPUT,所以我不能简单地更改为fwrite。我正试图找出如何使FPUT工作,以便我可以给他们修复。我的测试环境使用PHP5.6.7

字符串中包含字符á(alt+0225)

使用此代码,当我在记事本++中查看文件时,字符仍然为空

 $datafile = fopen("datafile.txt", "a");
 foreach (getallheaders() as $name => $value){
      $y = "$name: $value\n";
      fwrite($datafile,$y);
 }
 fclose($datafile);
 $datafile_fputs = fopen("datafile_fputs.txt", "a");
 foreach (getallheaders() as $name => $value) {
      $y = "$name: $value\n"; 
      fputs($datafilefputs,$y);
 }
 fclose($datafile_fputs);
使用此代码,当使用记事本++查看时,将转换为其他内容

 $datafile = fopen("datafile.txt", "a");
 foreach (getallheaders() as $name => $value){
      $y = "$name: $value\n";
      fwrite($datafile,$y);
 }
 fclose($datafile);
 $datafile_fputs = fopen("datafile_fputs.txt", "a");
 foreach (getallheaders() as $name => $value) {
      $y = "$name: $value\n"; 
      fputs($datafilefputs,$y);
 }
 fclose($datafile_fputs);
我在stackoverflow上尝试了此操作,但字符仍然显示不正确

 $file = "datafile_fputs";
 $datafile_fputs = fopen($file, "a");
 foreach (getallheaders() as $name => $value) {
      $y = "$name: $value\n"; 
      $file = "\xEF\xBB\xBF".$file;
      fputs($datafile_fputs,$y);
 }
 fclose($datafile_fputs);

有人知道为什么fputs的行为不同,以及如何修复它吗?

这是我能想到的唯一解决方案。在使用getallheaders将以下代码运行到文件中时,$\u请求['data']的FPUT起作用。我假设文件的头被设置为utf-8的BOM,因此在正确编码后输入的所有内容

 $file = "datafile_fputs";
 $datafile_fputs = fopen($file, "a");
      foreach (getallheaders() as $name => $value) {
           $y = "\xEF\xBB\xBF"; 
           $y .= "$name: $value\n";
           fputs($datafile_fputs,$y);
  }
  fputs($datafile_fputs,$_REQUEST['data']);
  fclose($datafile_fputs);