UTF 8與GBK的區別

2021-09-12 14:24:15 字數 2021 閱讀 5361

utf-8是一種國際化標準的文字編碼,我們已知windows系統程式已經將最初的utf-8轉向unicode,而gbk的存在是為了中國國情而創造的,不過gbk也將伴隨著中文字元的一直流傳下去。

簡單而言:

gbk: 專門用來解決中文編碼,雙位元組。

是在國家標準gb2312基礎上擴容後相容gb2312標準。

包含全部中文字元。

utf-8: 解決國際上制度的一種多位元組編碼,對英文使用8位(1個位元組),中文使用24位(3個位元組)來編碼。

對於英文本元較多的論壇適用於utf-8節省空間。

包含全世界所有國家需要用到的字元。

gbk和utf-8文字編碼的特點:

gbk的文字編碼是雙位元組來表示的,即不論中、英文本元均使用雙位元組來表示,只不過為區分中文,將其最高位都定成1。

至於utf-8編碼則是用以解決國際上字元的一種多位元組編碼,它對英文使用8位(即乙個位元組),中文使用24位(三個位元組)來編碼。對於英文本元較多的論壇則用utf-8節省空間。

gbk和utf-8文字編碼的區別:

gbk包含全部中文字元;

utf-8則包含全世界所有國家需要用到的字元。

gbk是在國家標準gb2312基礎上擴容後相容gb2312的標準;(好像還不是國家標準)

utf-8編碼的文字可以在各國各種支援utf8字符集的瀏覽器上顯示。

所以,對於英文比較多的論壇 ,使用gbk則每個字元占用2個位元組,而使用utf-8英文卻只佔乙個位元組。

注意:

utf-8版本雖然具有良好的國際相容性,但中文需要比gbk/big5版本多占用50%的資料庫儲存空間,因此並非推薦使用,僅供對國際相容性有特殊要求的使用者使用。

總結:

gbk就是在儲存你的帖子的時候,乙個漢字占用兩個位元組。外國人看會出現亂碼,此為我中華為自己漢字編碼而形成之解決方案。

utf8就是在儲存你的帖子的時候,乙個漢字占用3個位元組。但是外國人看的話不會亂碼,此為西人為了解決多位元組字元而形成之解決方案。

ascii(iso-8859-1)是鼻祖,最簡單的方式,位元組高位為0。

gb2312、gbk、gb18030,這幾個是中文編碼方式,並向下相容。gb2312包含7000多個漢字和字元,gbk包含21000多個,gb18030更厲害,到了27000多個。他們都是用2個位元組來表示乙個漢字。跟ascii是怎麼區分的呢?如果高位元組的高位為1(也就是高位元組大於127),就表示是漢字,低位元組並無明顯特徵。

unicode是統一編碼,它建立了乙個全世界統一的碼表。世界上的所有文字,在這張碼表中都是唯一的。

utf-8是unicode的一種儲存、傳輸方式。它將整個unicode碼表分為3部分。

0000 - 007f 這部分是最初的ascii部分,按原始的儲存方式,即0******x。

0080 - 07ff 這部分儲存為110***xx 10******。

0800 - ffff 這部分儲存為1110***x 10****** 10******。

因此,乙個漢字究竟被儲存為什麼,就需要:先查unicode碼表,然後根據在碼表的位置進行計算。例如:「電」字,在碼表中是3575,計算成utf8就是e794b5,而在gb2312的碼表中為b5e7。

utf-8的好處:相容ascii,儲存英文檔案都是單位元組,檔案小。當然,當以存中文為主時就變成了3位元組編碼了,比gb系列還大!如何標明乙個檔案是utf8格式呢?這個標記是可選的:ef bb bf。比如,用windows自帶的記事本建立乙個utf8格式的檔案,就會加上這個標記。但是,如果用ultraedit建立utf8檔案,並不會加上這個標記。這個標記有個術語,叫做bom(byte order mark)。不帶bom的utf8檔案和gb2312檔案怎麼區分呢?我也不知道。唯一能想到的辦法就是:先用一種試,如果出現亂碼,就用另一種再試。

簡言而知,gbk編碼方式的編碼是以中國國情而創造的,在國際上的相容性不好,這也是為什麼大多數的網頁是使用utf-8編碼而不是gbk。

GBK與UTF 8的區別

gbk的文字編碼是雙位元組來表示的,即不論中 英文本元均使用雙位元組來表示,只不過為區分中文,將其最高位都定成1。至於utf 8編碼則是用以解決國際上字元的一種多位元組編碼,它對英文使用8位 即乙個位元組 中文使用24位 三個位元組 來編碼。對於英文本元較多的論壇則用utf 8節省空間。gbk包含全...

gbk與utf 8的區別

很多使用者問gbk與utf 8版本有什麼區別,這邊作了個整理如下 kesioncms的gbk版本與utf 8版本功能是一樣的 只不過編碼方式不同。gbk的文字編碼是雙位元組來表示的,即不論中 英文本元均使用雙位元組來表示,只不過為區分中文,將其最高位都定成1。至於utf 8編碼則是用以解決國際上字元...

GBK與UTF 8的區別

gbk的文字編碼是雙位元組來表示的,即不論中 英文本元均使用雙位元組來表示,只不過為區分中文,將其最高位都定成1。至於utf 8編碼則是用以解決國際上字元的一種多位元組編碼,它對英文使用8位 即乙個位元組 中文使用24位 三個位元組 來編碼。對於英文本元較多的論壇則用utf 8節省空間。gbk包含全...