字符集編碼知識詳解

oracle_kai發表於2008-01-31

字符集編碼知識詳解

ASCII

    ASCII碼是7位編碼,編碼範圍是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯數字和標點符號等字元。其中0x00-0x20和0x7F共33個控制字元。

    只支援ASCII碼的系統會忽略每個位元組的最高位,只認為低7位是有效位。HZ字元編碼就是早期為了在只支援7位ASCII系統中傳輸中文而設計的編碼。早期很多郵件系統也只支援ASCII編碼,為了傳輸中文郵件必須使用BASE64或者其他編碼方式。

 

ASCII碼錶 

在計算機中,通常用一個位元組(8)存放一個字元的ASCII

00000000~01111111 (高位補0

’a’ ascii 編碼97 即為01100001

漢字編碼 

在計算機中,通常用擴充套件的ASCII碼作為漢字編碼

10000000~11111111 (最高位置1

  的編碼為 214 208 11010110  11010000’

 

 

Gb231280

GB2312碼是中華人民共和國國家漢字資訊交換用編碼,全稱《資訊交換用漢字編碼字符集--基本集》,由國家標準總局釋出,1981年5月1日實施,通行於大陸。新加坡等地也使用此編碼。

 

GB2312收錄簡化漢字及符號、字母、日文假名等共7445個圖形字元,其中漢字佔6763個。GB2312規定"對任意一個圖形字元都採用兩個位元組表示,每個位元組均採用七位編碼表示",習慣上稱第一個位元組為"高位元組",第二個位元組為"低位元組"。GB2312-80包含了大部分常用的一、二級漢字,和9區的符號。該字符集是幾乎所有的中文系統和國際化的軟體都支援的中文字符集,這也是最基本的中文字符集。其編碼範圍是高位0xa1-0xfe,低位也是0xa1-0xfe;漢字從0xb0a1開始,結束於0xf7fe。

 

GB2312將程式碼表分為94個區,對應第一位元組(0xa1-0xfe);每個區94個位(0xa1-0xfe),對應第二位元組,兩個位元組的值分別為區號值和位號值加32(2OH),因此也稱為區位碼。01-09區為符號、數字區,16-87區為漢字區(0xb0-0xf7),10-15區、88-94區是有待進一步標準化的空白區。GB2312將收錄的漢字分成兩級:第一級是常用漢字計3755個,置於16-55區,按漢語拼音字母/筆形順序排列;第二級漢字是次常用漢字計3008個,置於56-87區,按部首/筆畫順序排列。故而GB2312最多能表示6763個漢字。

 

編碼範圍:0xA1A1--0xFEFE

漢字範圍:0xB0A1--0xF7FE

編碼方式:

GB2312 "對任意一個圖形字元都採用兩個位元組表示,每個位元組均採用七位編碼表示",習慣上稱第一個位元組為"高位元組",第二個位元組為"低位元組"

GB2312的編碼範圍為2121H-777EH,與ASCII有重疊,通行方法是將GB碼兩個位元組的最高位置1以示區別。

 

GB2312(1980)一共收錄了7445個字元,包括6763個漢字和682個其它符號。漢字區的內碼範圍高位元組從B0-F7,低位元組從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。與ASCII有重疊,通行方法是將GB碼兩個位元組的最高位置1以示區別。

 

背景知識:

GB2312碼是中華人民共和國國家漢字資訊交換用編碼,全稱《資訊交換用漢字編碼字符集--基本集》,由國家標準總局釋出,198151日實施,通行於大陸。新加坡等地也使用此編碼。該字符集是幾乎所有的中文系統和國際化的軟體都支援的中文字符集,這也是最基本的中文字符集。其編碼範圍是高位0xa10xfe,低位也是0xa1-0xfe;漢字從0xb0a1開始,結束於0xf7fe16-87區為漢字區(0xb0-0xf7)。故而GB2312最多能表示6763個漢字。

備註:

·GB2312的原文還是區位碼,從區位碼到內碼,需要在高位元組和低位元組上分別加上A0

·在DBCS中,GB內碼的儲存格式始終是big endian,即高位在前。

· GB2312的兩個位元組的最高位都是1。但符合這個條件的碼位只有128*128=16384個。所

GBKGB18030的低位元組最高位都可能不是1。不過這不影響DBCS字元流的解析:在讀取DBCS字元流時,只要遇到高位為1的位元組,就可以將下兩個位元組作為一個雙位元組編碼,而不用管低位元組的高位是什麼。

 

GBK編碼

GBK是GB2312-80的擴充套件,是向上相容的。它包含了20902個漢字

範圍:0×8140 - 0xFEFE

漢字範圍:

GBK/2OXBOA1-F7FE, 收錄 GB2312 漢字 6763 個,按原序排列;

GBK/3OX8140-AOFE,收錄 CJK 漢字 6080 個;

GBK/4OXAA40-FEAO,收錄 CJK 漢字和增補的漢字 8160 個。

編碼方式:

GBK 亦採用雙位元組表示,總體編碼範圍為 8140-FEFE 之間,首位元組在 81-FE 之間,尾位元組在 40-FE 之間,剔除 XX7F 一條線。

字符集:

GBK 共收入21886個漢字和圖形符號,包括:

GB2312 中的全部漢字、非漢字元號;

BIG5 中的全部漢字;

ISO-10646 相應的國家標準 GB13000 中的其它 CJK 漢字;

以上合計 20902 個漢字。

其它漢字、部首、符號,共計 984 個。

背景知識:

GBK 向下與 GB2312 完全相容,向上支援 ISO-10646 國際標準,是一種過渡時期的編碼實現方式。

GBKGB2312-80的擴充套件,是向上相容的。它包含了20902個漢字,其編碼範圍是0x8140-0xfefe,剔除高位0x80的字位。其所有字元都可以一對一對映到Unicode2.0

備註:

微軟公司自Windows 95 簡體中文版開始支援 GBK 程式碼,標準叫法是 Windows codepage 936,也叫做 GBK(國家標準),它也是 8-bit 的變長編碼。據我所知 GBK從來沒成為正式的國家標準,只不過因為Windows 的普及,它已經成為事實上的標準了。但目前的多數搜尋引擎都不能很好地支援 GBK 漢字。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10159839/viewspace-166538/,如需轉載,請註明出處,否則將追究法律責任。

相關文章