這篇文章解決了我糾結一晚上的問題!!!推薦。有時ie8也如此。
將Joomla!修改為UTF-8編碼之後,發現使用部分模版(如Joomla! 1.03附帶的rhuk_solarflare_ii模版)時偶爾會發生開啟頁面為空白的現象,特別是瀏覽器未設定為“自動選擇”編碼的時候。
在windows作業系統上使用IE6作為瀏覽器時。常常會發生這樣的問題:在瀏覽使用UTF-8編碼的網頁時,瀏覽器無法自動偵測(即沒有設定“自動選擇”編碼格式時)該頁面所用的編碼。即使網頁已經聲明過編碼格式:
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
由此造成某些含有中文UTF-8編碼的頁面產生空白輸出。
如果使用的是IE7/8、Mozilla、Mozilla Firefox、Sarafi的瀏覽器這不會造成這個問題。這是由於IE6解析網頁編碼時以HTML內的標籤優先,而後才是HTTP header內的訊息;而mozilla系列的瀏覽器則剛剛相反。
由於UTF-8為3個位元組表示一個漢字,而普通的GB2312或BIG5是兩個。頁面輸出時,由於上述原因,使瀏覽器解析、輸出<title> </title>的內容時,如果在</title>前有奇數個全形字元時,IE6把UTF-8當作兩個位元組解析時出現半個漢字的情況,這時該半個漢字會和</title>的<結合成一個亂碼字,導致IE6無法讀完<title>部分,使整個頁面為空白百輸出。而這個時候如果察看源檔案的話,會發現實際上整個頁面全部已經輸出了。
因此最簡單的解決辦法是在網頁檔案的標籤中一定要把字元定義<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />放在<title></title>之前。
ps:涉及到編碼問題的方式
1.伺服器httpd.conf檔案:AddDefaultCharset UTF-8
這種方法不推薦,因為伺服器上很可能有其他編碼的網站存在,所以可以使用AddDefaultCharset off來關閉預設檔案編碼,伺服器依靠html檔案投中設定的語言來決定編碼。
2.指令碼php.ini檔案:default_charset = “UTF-8″
作用同httpd.conf檔案,也不推薦,可以把該行注釋掉,原因同上
3..htaccess文檔:AddDefaultCharset UTF-8
一般人都無法修改httpd.cnf和php.ini,同時也不推薦修改這兩個檔案。這時也可以在網站根目錄下寫入.htaccess文檔,在該文檔中設定網站字元集
4.網頁檔案字元集:
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
===============================
這個IE6的BUG終於讓我遇到了,今天搞MYOA2的OUTGO(發文表),<title>發文表</title> 在 IE6裡面顯示空白,瀏覽器當成了gbk來解釋。於是將<meta utf-8> 提到<title>前,OK!
本來以為已經跟IE6拜拜,偶然的機會,發現還是要做足測試。