網(wǎng)頁編碼英文譯為web page encoding,是在網(wǎng)頁中指定其特定的字符編碼格式的庫,本文將講述GBK及UTF-8網(wǎng)頁編碼定義與應用
網(wǎng)頁編碼英文譯為web page encoding,是在網(wǎng)頁中指定其特定的字符編碼格式的庫。
GBK是國家標準GB2312基礎上擴容后兼容GB2312的標準。GBK的文字編碼是用雙字節(jié)來表示的,即不論中、英文字符均使用雙字節(jié)來表示,為了區(qū)分中文,將其最高位都設定成1。GBK包含全部中文字符,是國家編碼,通用性比UTF8差,不過UTF8占用的數(shù)據(jù)庫比GBK大。
UTF-8:Unicode TransformationFormat-8bit,允許含BOM,但通常不含BOM。是用以解決國際上字符的一種多字節(jié)編碼,它對英文使用8位(即一個字節(jié)),中文使用24為(三個字節(jié))來編碼。UTF-8包含全世界所有國家需要用到的字符,是國際編碼,通用性強。UTF-8編碼的文字可以在各國支持UTF8字符集的瀏覽器上顯示。如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,他們無需下載IE的中文語言支持包。
UTF-8版本雖然具有良好的國際兼容性,但中文需要比GBK/BIG5版本多占用50%的數(shù)據(jù)庫存儲空間,因此并非推薦使用,僅供對國際兼容性有特殊要求的用戶使用。簡單地說:對于中文較多的網(wǎng)站,適宜用GBK編碼節(jié)省數(shù)據(jù)庫空間。對于英文較多的網(wǎng)站,適宜用UTF-8節(jié)省數(shù)據(jù)庫空間。
GBK、GB2312等與UTF8如何轉換?GBK、GB2312等與UTF8之間都必須通過Unicode編碼才能相互轉換:GBK、GB2312——Unicode——UTF8;UTF8——Unicode——GBK、GB2312。使用Windows記事本的“另存為”,可以在GBK、Unicode、Unicode big endian和UTF-8這幾種編碼方式間相互轉換。
如何讓瀏覽器正確識別網(wǎng)頁編碼?一般在網(wǎng)頁中都要有如下一句:<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,指示此網(wǎng)頁的字符集編碼是GB2312。(或者UTF-8)
頁面有時候指定了編碼為什么有時會出現(xiàn)亂碼?這可能是頁面申明編碼與文件本身編碼不一致,更多時候是以錯誤編碼打開頁面然后保存導致的,或者是用某些FTP軟件直接在線修改文件,比如CuteFTP,由于軟件編碼配置錯誤而導致轉換錯了編碼。這時候使用window的記事本打開,用“另存為”保存為對應的編碼即可解決問題。
在windows操作系統(tǒng)上使用IE作為瀏覽器時,常常會發(fā)生這樣的問題:在瀏覽使用UTF-8編碼的網(wǎng)頁時,瀏覽器無法自動識別該頁面所用的編碼,即使網(wǎng)頁已經(jīng)聲明過編碼格式:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />,由此造成某些含有中文UTF-8編碼的頁面產(chǎn)生空白輸出。如果使用的是Firefox、Sarafi的瀏覽器這不會造成這個問題。這是由于IE解析網(wǎng)頁編碼時以HTML內(nèi)的標簽優(yōu)先,而后才是HTTP header內(nèi)的訊息,而mozilla系列的瀏覽器則剛剛相反。
由于UTF-8為3個字節(jié)表示一個漢子,而普通的GB2312或BIG5是兩個。頁面輸出時,由于上述原因,使瀏覽器解析、輸出<title></title>的內(nèi)容時,如果在</title>前有奇數(shù)個全角字符,IE把UTF-8當作兩個字節(jié)解析時出現(xiàn)半個漢字的情況,這時該半個漢字會和</title>的<結合成一個亂碼字,導致IE無法讀完<title>部分,使整個頁面為空百輸出,而這個時候如果察看源文件的話,會發(fā)現(xiàn)實際上整個頁面全部已經(jīng)輸出了,但瀏覽器不顯示內(nèi)容。最簡單的解決辦法是把<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 放在<title></title>之前。