IE6不能主動識別UTF-8編碼,導致空白頁面的問題

來源:互聯網
上載者:User

這篇文章解決了我糾結一晚上的問題!!!推薦。有時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拜拜,偶然的機會,發現還是要做足測試。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.