2011-06-12 33 views
0

爲www.besaltnlight.ca validator.w3.org報告:有效validator.w3.org報告標記錯誤 - 檢測字符編碼 「UTF-8」

字符編碼改寫! 檢測到的字符編碼「utf-8」已被抑制,而使用「iso-8859-1」。

php代碼輸出iso-8859-1和php將其設置爲默認字符集。

是什麼導致了這個問題?我使用了錯誤的文檔類型?

哦,並會在IE中引起怪癖模式的任何?

感謝您的幫助。

格里

回答

2

該文檔以UTF-8編碼。它有一個字節順序標記,智能引號和省略號,所有編碼都以UTF-8正確編碼。它始於兩個字節順序標記,這是無效的。您必須刪除一個,並且驗證程序還說,在UTF-8文檔中出現BOM可能會造成混淆,因此您可以將它們都刪除。

既然你輸出UTF-8,您必須將HTTP標頭更改爲:

Content-type: text/html; charset=utf-8 

因爲你缺少這個頭,你強制瀏覽器猜測。另外,由於相同的原因,中間標籤必須更改爲

<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 

+0

我曾經有過,它強制IE7進入怪癖模式... – Gerry 2011-06-13 02:43:34

1

您的輸出以Unicode字節順序標記開始,以UTF-8編碼。

這可能是PHP文件的第一部分字節,或者是主文件包含的任何PHP文件。你的編輯甚至可能不會顯示它們。解釋爲ISO-8859-1輸出的開始看起來像<!DOCTYPE html,它們甚至是兩個字節順序標記,一個接一個。

正如jleedev所說,要麼確保你的文件真的用Latin-1編碼,要麼把編碼聲明爲UTF-8。

+0

ŭlo:我不輸出任何utf BOM。驗證器正確地說一些舊的瀏覽器不支持它,所以我試圖將所有輸出都作爲ISO-8859-1 ... – Gerry 2011-06-13 02:46:13

+0

然後使用另一個編輯器,它不會自動將BOM添加到正在編輯的PHP文件中 - 以及配置你的編輯器保存爲拉丁文1(ISO-8859-1)。 (這可能是這個BOM是在你包含的庫文件之一中。) – 2011-06-13 11:10:28