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