2009-07-17 35 views
0

這基本上是我做的PHP - 禁用奇怪字符時的錯誤報告

echo @file_get_contents("http://******.org/ti.php?i=".$i."&s=".$s); 

但是,當我從服務器上刪除ti.php文件來測試它是否隱藏我得到這個錯誤我瀏覽器錯誤將是:

 

這到底是什麼(大聲笑)?我從來沒有見過它,不能想出解釋它爲什麼會出現,有什麼想法?

+1

這可能是你的服務器返回的東西嗎?如果您在不同的域(使用不同的web服務器)上調用file_get_contents(),會產生類似的結果嗎? – inkedmn 2009-07-17 15:55:29

回答

10

http://en.wikipedia.org/wiki/Byte-order_mark

這是作爲一個ISO-8859-1一個處理的UTF-8的空白文檔的BOM。

file_ get_contents生成一個錯誤,不會顯示,所以這基本上是一個空白的UTF-8文檔。

沒有任何字符集信息,瀏覽器將其顯示爲iso-8859-1文檔,因爲它必須是默認設置。所以BOM顯示爲這些奇怪的字符。

編輯:

事實上,我複製你的問題的三個字符,它們粘貼在文檔中,看了看十六進制代碼:EF BB BF,這是UTF-8的BOM。

1

爲了解決FWH的問題,請確保您將內容輸出到瀏覽器並在內容類型標題中使用適當的編碼。要做到這一點

最簡單的辦法就是設置默認字符集

ini_set('default_charset', 'UTF-8'); 
echo @file_get_contents("http://******.org/ti.php?i=".$i."&s=".$s); 

但是你可以使用一個明確的標題()如果你喜歡打電話。