【问题标题】:How to set text file encoding in PHP?如何在 PHP 中设置文本文件编码?
【发布时间】:2013-10-04 17:43:37
【问题描述】:

如何在 PHP 中设置文本文件 ENCODING(例如 UTF-8)?

让我告诉你我的问题。这是我的代码:

<?php 
file_put_contents('test.txt', $data); // data is some non-English text with UTF-8 charset
?>

输出:اÙ!

fwrite() 有类似的输出。

但是当我通过记事本创建 test.txt 并设置字符集 UTF-8 时,输出就是我想要的。 我想在 PHP 文件中设置字符集。

现在这是我的问题:如何通过 PHP 设置文本文件编码?

【问题讨论】:

    标签: php text encoding utf-8 character-encoding


    【解决方案1】:

    在文件中存储文本时,PHP 不应用编码:它完全按照字符串中的布局存储数据。

    您提到您在打开notepad.exe 中的文件时遇到问题。那个文本编辑器不太擅长猜测你打开的文件的编码;如果文本以 UTF-8 编码,则必须选择将其打开为 UTF-8。如果可能,请使用其他文本编辑器。 Notepad++ 是一个流行的替代品。

    如果您必须使用notepad.exe,作为最后的手段,请在写入任何其他内容之前将Byte Order Mark 写入文件;这将使它将文件识别为 UTF-8,同时可能使文件无法用于其他目的(有关详细信息,请参阅 Wikipedia 文章)。

    file_put_contents("file.txt", "\xEF\xBB\xBF" . $data);
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用mb_convert_encoding

      $data = mb_convert_encoding($data, 'UTF-8', 'auto');
      file_put_contents('test.txt', $data);
      

      同时检查iconv

      更新:(试试这个并为您的文本找到正确的编码)

      foreach(mb_list_encodings() as $chr){ 
          echo mb_convert_encoding($data, 'UTF-8', $chr)." : ".$chr."<br>";    
      }
      

      另外,在GitHub 上试试这个。

      【讨论】:

      • 文本编码没问题。我想更改文件编码。
      • @Programmer.zip,你试过这个吗?这就是编码所需要的。
      • 自昨晚以来大约10次:(
      【解决方案3】:

      试试:

      file_put_contents('test.txt', utf8_encode($data)); 
      

      【讨论】:

      • 你确定你的字符串真的是 UTF-8 吗?用php.net/manual/it/function.iconv-get-encoding.php测试它
      • 它使用'internal_encoding''output_encoding'返回ISO-8859-1,我使用iconv_set_encoding()并将其设置为UTF-8,但还没有工作..
      • $data = iconv("ISO-8859-1","UTF-8", $data);
      • 我认为文本编码没有问题(因为当我通过记事本创建文本文件时它可以工作)并且我多次尝试此代码但它不起作用...
      【解决方案4】:

      您可以创建一个函数,将字符串数组转换为 utf8 编码的字符串数组,另一个函数为您解码并写入记事本文件。

      <?php
      function utf8_string_encode(&$array){
          $myencode = function(&$value,&$key){
              if(is_string($value)){
                  $value = utf8_encode($value);
              } 
              if(is_string($key)){
                  $key = utf8_encode($key);
              }
              if(is_array($value)){
                  utf8_string_encode($value);
              }
          };
          array_walk($array,$func);
          return $array;
      }
      ?>
      

      【讨论】:

        猜你喜欢
        • 2011-06-30
        • 1970-01-01
        • 2018-01-11
        • 2021-02-10
        • 1970-01-01
        • 2010-10-04
        • 2015-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多