2011-08-19 489 views
1

我制作了一个表单,用户用阿拉伯语编写他的消息并通过提交按钮提交。该消息被保存在数据库中,我需要创建服务器的其他应用程序上的.txt文件,显示是这样的:PHP fwrite函数以utf-8编码编写txt文件

ØÙ¾ÙٓيسÙÙ¾Ø

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

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

ØÙ¾ÙٓيسÙپر0±5Ùزنيز٠... O±Ú©O²ØªÙغندÙييOO±USOÙØ'Ù

好之后,当我在记事本中保存的txt文件为UTF-8编码上述未知的东西变为阿拉伯语。
但我不能那样手动为每条消息。

我在网上搜索了很多,做了这些:

  1. 我保存在UTF-8
  2. 我以前utf8_encode功能
  3. 脚本我设置太ini_set('default_charset', 'UTF-8');
  4. 这也<meta http-equiv="Content-Type" content="text/html; charset=utf-8; encoding=utf-8" />
  5. 我将fwrite中的参数更改为“wb”,其中b是二进制的

对这个问题的任何解决方案都很高兴,我在上周一直在解决这个问题。我知道问题出在编码上,所以我如何使用PHP编写utf-8编码文件?

回答

3

如果文本显示在一个程序很好,但不是另一个,那只是意味着一个程序正确地解释文件而另一个则没有。当您再次保存时,记事本很可能会在文件上设置一个UTF-8 BOM,所以Eclipse现在会自动识别它是UTF-8编码的。否则,Eclipse将默认使用latin-1或其他编码。

两个选项:

一个BOM可以有助于使程序识别UTF-8,但也会导致其他程序出现问题,而这些程序不期望或不需要BOM。是否使用BOM取决于您的预期用途和目标受众。

+0

我跟着链接,并对我的字符串:$ utf8_with_bom = chr(239)。 chr(187)。 chr(191)。$串;谢谢你们,你们是救生员 – googler

+0

好。请注意,UTF-8不需要BOM,有些程序不理解它。在那些BOM中,在文件的开头就会显示为三个有趣的波形。如果你有一些Google员工,你可以找到很多关于这方面的信息。 – deceze

0

在你需要设置你的编码在菜单编辑>设置编码日食...