2011-08-19 69 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

在你需要設置你的編碼在菜單編輯>設置編碼日食...