問題:
我博客編碼是utf-8的。有時候打開頁面是一片空白,刷新一下又正常了,但查看源文件又是完整的。在ie6和firefox下都正常,但是在ie7下偶爾會出現這樣的情況。
一開始我懷疑是IDC的問題,後來又想到了js、css、頁面結構等。偶然間我想到了編碼。畢竟編碼的問題已經不是一兩次找過我麻煩了。
解決:
<title>腳本之家</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
交換一下順序
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>LC'BLOG</title>
原因:
為什麼只有ie7會出現這樣的問題呢?這是由於ie7解析網頁編碼時以html內的標簽優先,而後才是http header內的訊息,而mozilla系列的浏覽器則剛剛相反。
由於utf-8編碼的頁面為3個字節表示一個漢字,而普通的gb2313或big5是兩個。頁面輸出時,由於上述原因,使浏覽器解析、輸出<title></title>的內容時,如果在</title>前有奇數個全角字符時,ie7把utf-8當作兩個字節解析時出現半個漢字的情況,這時該半個漢字會和</title>的"<"結合成一個亂碼字,導致ie7無法讀完<title>部分,使整個頁面為空百輸出。而這個時候如果察看源文件的話,會發現實際上整個葉面全部已經輸出了。
因此最簡單的解決辦法是在網頁文件的<head></head>標簽中一定要把字符定義<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />放在<title></title>之前。
實際上,其他編碼版本的也存在類似的問題,只是我們大家的浏覽器默認編碼都是 GBK 所以更不容易被察覺罷了。