2012-11-29 16 views
2

我試圖將網站轉換爲UTF-8。爲此,我將PHP文件轉換爲UTF-8,添加了header('Content-Type: text/html; charset=utf-8'),將<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />添加到HTML標頭,將mysql表內容轉換爲utf-8(ALTER ...),並將MySQL連接編碼設置爲UTF-8。Firefox/Chrome/LAMP:UTF-8 - 無效字符

現在,每個人似乎都很好,但有時IE8,Firefox和Chrome顯示 而不是德語變音。 IE9根本不顯示這個問題。

刷新完成後,問題得到解決,但經過一段或數再次刷新顯示出來,....

任何想法?

+0

你可以仔細檢查服務的編碼是否真的是UTF-8?您可以在Firefox中通過右鍵單擊頁面,然後選擇「查看頁面信息」來實現。 – poke

回答

0

好的,明白了!

問題是,mysql客戶端編碼被嵌入式廣告服務器(OpenX)所改變。

現在,我在執行「view_local」之後將字符集設置回UTF-8,現在一切似乎都很好!

感謝您的支持,幫助我找到了這個問題的根源!

0

通常這樣的行爲是由IE的怪癖模式造成的。如果您的頁面不是有效的HTML,則瀏覽器可以回退到quirksmode,您可以選中此按F12以顯示開發人員工具欄。

如果顯示的模式是quirksmode,您可以通過編寫有效的HTML來解決您的問題。有離線和online HTML Validators可用。

如果顯示的模式與您的瀏覽器相匹配,那麼您可以使用W3-checker來查找頁面編碼的問題。

編輯:

另外,請確保您設置的連接對象的編碼,你使用它之前。你寫道你將MySQL連接設置爲utf-8,但是你沒有寫出你是如何做到的。

// tells the mysqli connection to deliver UTF-8 encoded strings. 
$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName); 
$db->set_charset('utf8'); 
+0

這個問題不僅發生在IE中。 – looper

+0

@looper - 你是對的我錯過了,但在這種情況下,我們可以使用提到的W3檢查器,它可以發現編碼問題。 – martinstoeckli