字元的編碼採用國際通用的ASCII碼(American Standard Code for Information Interchange,美國資訊交換標準程式碼),每個ASCII碼以1個位元組(Byte)儲存,從0到數字127代表不同的常用符號,例如大寫A的ASCII碼是65,小寫a則是97。由於ASCII碼只用了位元組的七個位,最高位並不使用,所以後來又將最高的一個位也編入這套編碼碼中,成為八個位的延伸ASCII(ExtendedASCII)碼,這套內碼加上了許多外文和表格等特殊符號,成為目前常用的編碼。基本的ASCII字符集共有128個字元,其中有96個可列印字元,包括常用的字母、數字、標點符號等,另外還有32個控制字元。標準ASCII碼使用7個二進位對字元進行編碼,對應的ISO標準為ISO646標準。
一個漢字佔2個位元組,一個位元組佔8位,一個字母佔1個位元組。計算機中,各種資訊都是以二進位制編碼的形式存在的,不管是文字還是其它各種資訊,在計算機中都是以0和1組成的二進位制程式碼表示的,之所以能區別這些資訊的不同,是因為它們採用的編碼規則不同。英文字母用的是單位元組的ASCII碼,漢字採用的是雙位元組的漢字內碼
1、字元(英文,包括字母、數字、標點、運算子等)編碼
字元的編碼採用國際通用的ASCII碼(American Standard Code for Information Interchange,美國資訊交換標準程式碼),每個ASCII碼以1個位元組(Byte)儲存,從0到數字127代表不同的常用符號,例如大寫A的ASCII碼是65,小寫a則是97。由於ASCII碼只用了位元組的七個位,最高位並不使用,所以後來又將最高的一個位也編入這套編碼碼中,成為八個位的延伸ASCII(ExtendedASCII)碼,這套內碼加上了許多外文和表格等特殊符號,成為目前常用的編碼。基本的ASCII字符集共有128個字元,其中有96個可列印字元,包括常用的字母、數字、標點符號等,另外還有32個控制字元。標準ASCII碼使用7個二進位對字元進行編碼,對應的ISO標準為ISO646標準。
雖然標準ASCII碼是7位編碼,但由於計算機基本處理單位為位元組(1byte = 8bit),所以一般仍以一個位元組來存放一個ASCII字元。每一個位元組中多餘出來的一位(最高位)在計算機內部通常保持為0(在資料傳輸時可用作奇偶校驗位)。由於標準ASCII字符集字元數目有限,在實際應用中往往無法滿足要求。為此,國際標準化組織又制定了ISO2022標準,它規定了在保持與ISO646相容的前提下將ASCII字符集擴充為8位程式碼的統一方法。ISO陸續制定了一批適用於不同地區的擴充ASCII字符集,每種擴充ASCII字符集分別可以擴充128個字元,這些擴充字元的編碼均為高位為1的8位程式碼(即十進位制數128~255),稱為擴充套件ASCII碼。
2、漢字的編碼
(1)漢字內碼
漢字資訊在計算機內部也是以二進位制方式存放。由於漢字數量多,用一個位元組的128種狀態不能全部表示出來,因此在1980年中國頒佈的《資訊交換用漢字編碼字符集——基本集》,即國家標準GB2312-80方案中規定用兩個位元組的十六位二進位制表示一個漢字,每個位元組都只使用低7位(與ASCII碼相同),即有128×128=16384種狀態。由於ASCII碼的34個控制程式碼在漢字系統中也要使用,為不致發生衝突,不能作為漢字編碼,128除去34只剩94種,所以漢字編碼表的大小是94×94=8836,用以表示國標碼規定的7445個漢字和圖形符號。
每個漢字或圖形符號分別用兩位的十進位制區碼(行碼)和兩位的十進位制位碼(列碼)表示,不足的地方補0,組合起來就是區位碼。把區位碼按一定的規則轉換成的二進位制程式碼叫做資訊交換碼(簡稱國標碼)。國標碼共有漢字6763個(一級漢字,是最常用的漢字,按漢語拼音字母順序排列,共3755個;二級漢字,屬於次常用漢字,按偏旁部首的筆劃順序排列,共3008個),數字、字母、符號等682個,共7445個。
由於國標碼不能直接儲存在計算機內,為方便計算機內部處理和儲存漢字,又區別於ASCII碼,將國標碼中的每個位元組在最高位改設為1,這樣就形成了在計算機內部用來進行漢字的儲存、運算的編碼叫機內碼(或漢字內碼,或內碼)。內碼既與國標碼有簡單的對應關係,易於轉換,又與ASCII碼有明顯的區別,且有統一的標準(內碼是惟一的)。
(2)漢字外碼
無論是區位碼或國標碼都不利於輸入漢字,為方便漢字的輸入而制定的漢字編碼,稱為漢字輸入碼。漢字輸入碼屬於外碼。不同的輸入方法,形成了不同的漢字外碼。常見的輸入法有以下幾類:
按漢字的排列順序形成的編碼(流水碼):如區位碼;
按漢字的讀音形成的編碼(音碼):如全拼、簡拼、雙拼等;
按漢字的字形形成的編碼(形碼):如五筆字型、鄭碼等;
按漢字的音、形結合形成的編碼(音形碼):如自然碼、智慧ABC。
輸入碼在計算機中必須轉換成機內碼,才能進行儲存和處理。
(3)漢字字形碼
為了將漢字在顯示器或印表機上輸出,把漢字按圖形符號設計成點陣圖,就得到了相應的點陣程式碼(字形碼)。全部漢字字碼的集合叫漢字字型檔。漢字型檔可分為軟字型檔和硬字型檔。軟字型檔以檔案的形式存放在硬碟上,現多用這種方式,硬字型檔則將字型檔固化在一個單獨的儲存晶片中,再和其它必要的器件組成介面卡,插接在計算機上,通常稱為漢卡。
用於顯示的字型檔叫顯示字型檔。顯示一個漢字一般採用16×16點陣或24×24點陣或48×48點陣。已知漢字點陣的大小,可以計算出儲存一個漢字所需佔用的位元組空間。例:用16×16點陣表示一個漢字,就是將每個漢字用16行,每行16個點表示,一個點需要1位二進位制程式碼,16個點需用16位二進位制程式碼(即2個位元組),共16行,所以需要16行×2位元組/行=32位元組,即16×16點陣表示一個漢字,字形碼需用32位元組。
即:位元組數=點陣行數×點陣列數/8
用於列印的字型檔叫列印字型檔,其中的漢字比顯示字型檔多,而且工作時也不像顯示字型檔需調入記憶體。
可以這樣理解,為在計算機內表示漢字而統一的編碼方式形成漢字編碼叫內碼(如國標碼),內碼是惟一的。為方便漢字輸入而形成的漢字編碼為輸入碼,屬於漢字的外碼,輸入碼因編碼方式不同而不同,是多種多樣的。為顯示和列印輸出漢字而形成的漢字編碼為字形碼,計算機透過漢字內碼在字模庫中找出漢字的字形碼,實現其轉換。