找回密碼
 註冊
搜索
查看: 8794|回復: 1

Joomla中的空白頁解決方案

[複製鏈接]
發表於 2007-11-30 15:54:43 | 顯示全部樓層 |閱讀模式
將Joomla!修改為UTF-8編碼之後,發現使用部分模版(如Joomla! 1.0.8附帶的rhuk_solarflare_ii模版)時偶爾會發生打開頁面為空白的現象,特別是瀏覽器未設置為「自動選擇」編碼的時候。

在windows操作系統上使用IE作為瀏覽器時。常常會發生這樣的問題:在瀏覽使用UTF-8編碼的網頁時,瀏覽器無法自動偵測(即沒有設定「自動選擇」編碼格式時)該頁面所用的編碼。即使網頁已經聲明過編碼格式:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
,由此造成某些含有中文UTF-8編碼的頁面產生空白輸出。

如果使用的是Mozilla、Mozilla Firefox、Sarafi的瀏覽器這不會造成這個問題。這是由於IE解析網頁編碼時以HTML內的標籤優先,而後才是HTTP header內的訊息;而mozilla系列的瀏覽器則剛剛相反。

由於UTF-8為3個字節表示一個漢字,而普通的GB2312或BIG5是兩個。頁面輸出時,由於上述原因,使瀏覽器解析、輸出<title></title>的內容時,如果在</title>前有奇數個全角字符時,IE把UTF-8當作兩個字節解析時出現半個漢字的情況,這時該半個漢字會和</title>的<結合成一個亂碼字,導致IE無法讀完<title>部分,使整個頁面為空百輸出。而這個時候如果察看源文件的話,會發現實際上整個葉面全部已經輸出了。

因此最簡單的解決辦法是再網頁文件的<head></head>標籤中一定要把字符定義<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文檔,在該文檔中設定網站字符集
網頁文件字符集:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Reference: http://www.admin365.com/thread-20783-1-1.html
 樓主| 發表於 2007-11-30 15:58:04 | 顯示全部樓層

我的解決方式

修改joomla templates目錄裡的index.php,將<meta http-equiv="content-type" content="text/html; charset=UTF-8">移至<head>的下一行(也就是先指定UTF-8,才寫<title>部份),這樣就不會碰到</title>前有亂碼導致IE誤判的問題了!
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|彩色筆小沛的知識庫

GMT+8, 2024-12-22 10:34 , Processed in 0.018792 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表