【问题标题】:php 5.6.7 fwrite vs fputs utf-8 encodingphp 5.6.7 fwrite 与 fputs utf-8 编码
【发布时间】:2015-04-15 16:32:53
【问题描述】:

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

例如 url?data=string

这被发送到我无法控制的另一台服务器,他们使用 fputs,所以我不能简单地更改为 fwrite。我试图弄清楚如何使 fputs 工作,以便我可以给他们修复。我的测试环境使用的是php 5.6.7。

字符串中是字符 á (alt+0225)。

使用此代码,当我在 notepad++ 中查看文件时,字符仍然是 á。

 $datafile = fopen("datafile.txt", "a");
 foreach (getallheaders() as $name => $value){
      $y = "$name: $value\n";
      fwrite($datafile,$y);
 }
 fclose($datafile);

使用此代码,当使用 notepad++ 查看时,á 会变成其他内容。

 $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 行为不同以及如何解决它吗?

【问题讨论】:

    标签: php utf-8 fwrite fputs


    【解决方案1】:

    这是我能想到的唯一解决方案。当使用 getallheaders 将以下代码运行到文件中时,$_REQUEST['data'] 的 fputs 工作。我假设文件的标题设置为 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);
    

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      相关资源
      最近更新 更多