2012-09-26 28 views
2

BOM設置爲\ XEF \ XBB \當使用以下代碼:PHP:使用(或不)「函數utf8_encode」結合XBF

$myString = 'some contents';  
$fh=fopen('newfile.txt',"w"); 
fwrite($fh, "\xEF\xBB\xBF" . $myString); 

是否有使用PHP功能首先編碼的任何點文本(例子中的$ myString)例如像運行utf8_encode($myString);或類似的iconv()命令?

假設首先將BOM \xEF\xBB\xBF輸入到文件中,並且UTF8幾乎代表世界上所有字符,但我沒有看到以這種方式創建文件的任何潛在故障情況。換句話說,我沒有看到任何主要的文本編輯器都無法正確解釋新創建的文件的情況,顯示所有字符。即使$myString將是HTML表單中的一個PHP $_POST變量。我對嗎?

回答

1

如果源文件是UTF-8編碼,則該字符串$myStringUTF-8編碼,你並不需要將其轉換。否則,在將其寫入文件之前,您需要先使用iconv()來轉換編碼。

並且note用於將ISO-8859-1字符串編碼爲UTF-8。

+0

你是什麼意思「源文件'在這種情況下? – Matte

+0

您的源代碼的編碼。 – xdazz

0

請注意utf8_encode只會轉換ISO-8859-1編碼的字符串。

通常,由於PHP僅支持256 char字符集,因此在將其寫入UTF-8之前,需要對包含非ASCII字符的任何字符串進行編碼。

BOM是可選的(大多數文本文件讀取器現在將掃描文件的編碼)。

Wikipedia

Unicode標準允許BOM的UTF-8,[2]但不需要 或支持或反對其使用