关于utf 8:PHP fwrite函数以utf-8编码写入txt文件

PHP fwrite function to write txt file in utf-8 encoding

我制作了一个表格,其中用户用阿拉伯语写他的消息并通过提交按钮提交。该消息保存在数据库中,我需要在服务器上为其他应用程序创建一个.txt文件,该文件显示如下内容:

?ˉ ù?ù?ù?ù??3ù? ù??

我成功地使用了fopen,fwrite函数来创建我的txt文件。

当我在记事本中打开文件时,阿拉伯文字正确显示
但是当我在Eclipse中打开它时,我得到的是这样的东西:

?ˉ ù?ù?ù?ù??3ù? ù??± ?±ù??2ù?ù??2 ù…?±ú??2 ?aù??où??ˉù?ù?ù? ?¨?±ù??ˉ ù??′ù?

然后,当我将txt文件保存为utf-8编码时,上述未知内容会变为阿拉伯语。
但是我不能为每条消息手动做到这一点。

我在互联网上搜索了很多内容,并进行了以下操作:

  • 我将脚本保存在utf-8中
  • 我使用了utf8_encode函数
  • 我也将其设置为ini_set('default_charset', 'UTF-8');
  • 这也是<meta http-equiv="Content-Type" content="text/html; charset=utf-8; encoding=utf-8" />
  • 我将fwrite中的参数更改为" wb",其中b代表二进制
  • 任何解决此问题的方法都非常令人高兴,我在上个星期一直在努力解决此问题。我知道问题出在编码中,因此如何使用PHP编写utf-8编码的文件?


    如果一个程序中的文本显示正常,而另一个程序中的文本显示不正常,则仅表示一个程序可以正确解释文件,而另一个程序则不能。再次保存时,记事本很可能在文件上设置了UTF-8 BOM,因此Eclipse现在会自动识别它是UTF-8编码的。否则,Eclipse会将latin-1或其他某种编码作为默认编码。

    两个选项:

    • 更改您的Eclipse首选项,默认情况下以UTF-8格式打开文件
    • 在编写文件时在文件上设置BOM,请参阅在PHP中使用BOM将字符串编码为UTF-8

    BOM有助于使程序识别UTF-8,但也会在其他不需要或不需要BOM的程序中引起问题。是否使用BOM表取决于您的预期用途和目标受众。


    在Eclipse中,您需要在菜单"编辑">"设置编码..."中设置编码。