[摘要]以淺顯易懂的語言,介紹漢字編碼的艱難歷程,力求使讀者懂得計算機處理漢字過程的原理,并解除在工作中可能遇到的困惑。
[關鍵詞]位(bit)字節(byte)ASCII碼內碼GBGBKGBl8030
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0210136-01
一、我國漢字編碼歷程
計算機一般是以字節(byte)為單位進行信息處理的,每一字節包括八個二進制位(bit),用二進制表示是00000000-11111111,為便于理解,也常用十進制表示為0-255(多稱為ASCII碼),應用時也會以十六進制表示為00-FF(多稱為內碼),因此只能處理(或識別)256個字符,這256個字符包括32個控制字符(0-31)、95個打印字符(21-126,就是能用鍵盤打出來,能在屏幕上顯示出來的)、1個表示刪除的(127,delete,都熟悉)、128個擴展字符(128-255)。擴展字符在不同的系統中有不同的顯示和用途,讀者要想看到擴展字符的真面目,在網上搜索“ASCII碼表”。
95個打印字符中包括了英文大小寫字母、10個阿拉伯數字、30多個符號(標點符號等),以英語為母語的人使用計算機就能處理任何的字、詞、句。
(一)GB2312-80編碼方案。我國1981年公布了《通信用漢字字符集(基本集)及其交換碼標準》GB2312-80方案(簡稱GB):
首先是使用2字節來表示一個漢字,因為只是使用1個字節表示漢字的話,最多能使用256個漢字:
其次是使用擴展字符,因為我們不能用兩個連續的符號如“【】”、“ab”或“fx”表示漢字,那會產生歧義。
最后,選擇使用ASCII碼為161-254的字符(94個)作為一個漢字的第一個字節(首字節)和第二個字節(尾字節)。這樣,理論上能顯示的漢字字數是94×94=8836(個)。
每94個算作一個區。共94個區。前15個區用來表示各種符號:其后的40個區表示常用的3755個一級漢字,這些漢字按照拼音來排列;再后的32個區用來表示次常用的3008個二級漢字,這些漢字用偏旁部首來排列。合計用了87個區,表示漢字6763個。
想知道哪個區的哪個位置代表什么,選擇內碼輸入法,輸入“區號+位號”,前者范圍1-87,后者范圍1-94。例如輸入5454(種),8226(蠔)。
對于一級漢字,是按拼音排序。對于二級漢字,則按偏旁部首排序。
九十年代初期,計算機剛剛普及的時候,使用的是DOS操作系統加掛漢字系統和WINDOWS中文版操作系統,所支持的就是能夠顯示出6763個漢字的GB2312-80。
(二)GBK擴展字符集。對大多數人來說,二級漢字幾乎都用不上。但很多的人名地名還都沒有包括進去,工作顯得無比尷尬和無奈。例如“玥”和“镕”,都不在其中。而6763個漢字對于現代漢語、古代漢語等研究者來說更是相距甚遠。
1995年下半年,我國公布GBK擴展字符集,標準名稱是《漢字擴展規范GBK 1.0》。其編碼方案是:
首字節使用ASCII碼為129-254的字符,尾字節使用ASCII碼為64~126,128~254的字符。那么所能表示的漢字數:(254-129+1)×(126-64+1+254-128+1)=23940(個)。
實際上,這個方案包含20902個漢字和一些符號。其余都是空位。為了兼容以前的漢字信息,GB中的漢字或符號的編碼在GBK中都保持不變。
中文WINDOWS95/98都支持GBK編碼系統。報刊、字幕、戶籍、銀行等都已經能夠打出“玥”和“镕”等漢字。
(三)GBl8030編碼方案。2萬漢字相對于10萬漢字(漢字總數沒有一個嚴格定義,或許在12萬以上,本文不探討漢字數量)來說,對于專業人員仍然顯得不夠,在電腦上打不出自己需要的漢字是很痛苦的。如果局限于用兩個字節表示漢字,那么最多能表示256×256=65536(個)。
于是在2000年,又發布了GBl8030編碼方案,用四個字節來表示一個漢字:第一字節使用ASCII碼為129-254的字符(126個);第二字節使用ASCII碼為48-57的字符(10個);第三字節使用ASCII碼為129-254的字符(126個);第四字節使用ASCII碼為48÷57的字符(10個)。
總共能表示漢字數126×10×126×10=1587600(個)。
能表示出150萬之多的漢字,理論上來說是足夠的了。而我們多數用戶使用的WINDOWS XP支持這種編碼方案。把所有的漢字都造進這個方案里面也是很難的事情。要兼顧到其他使用漢字的國家和地區(如港臺、日本、韓國),即使是在大陸上不用的,也都要包容,目前常見的大字庫是“方正超大字庫”,包括7萬余漢字。而“鄭碼超級漢字系統”則包括10萬余漢字。
二、使用過程中可能遇到的問題
(一)四字節漢字問題。在使用GB和GBK時,不論是在屏幕顯示(包括打印輸出)上還是在磁盤(光盤存儲)上,他們都是占用兩個字節。現在不同了,漢字顯示仍然占兩個字節,但在存儲上,可能要占用四個字節。那么,接觸過數據庫的用戶可能都知道在字段設計時,以前都是按照一個漢字占用兩個字節來設計的,現在,顯示和存儲并不很一致,這就需要在設計各種數據表時,考慮這個因素,同時,也對之前開發的各種數據庫管理軟件的兼容性提出質疑。
(二)漢字輸入法的選擇。適合輸入GB和GBK的漢字輸入法很多,但適合輸入超大字庫的輸入法卻不多,如果用戶需要使用GBK以外的漢字,則需要下載或購買新的輸入法軟件。
(三)字庫使用技巧。漢字字庫有很多。以方正字庫為例,有以下幾種:
1.方正簡體字庫(如方正楷體簡體):GB漢字;方正繁體字庫(如方正楷體簡體):GB漢字。前者中的漢字,如果有對應的繁體,如“偉”,在后者中,相同的內碼就表示為“俸”。這樣的繁體字庫比較適合用戶打印使用。不便于交流,如果在沒有安裝繁體字庫的電腦上,會顯示簡體。
2.方正GBK字庫(如楷體):GBK漢字,在這個字庫中,簡體“偉”和繁體“偉”是兩個內碼不同的字,這里的繁體才是真正的繁體。在字處理軟件WORD中,有簡體繁體互相轉換的工具,就是指這種轉換——對內碼進行了轉換。
3.方正超大字庫:7萬余漢字,安裝這個字庫的用戶很少。如果你使用方正超大字庫處理文本,在交流時最好是做成PDF文件,否則,對方就會因沒有超大字庫而看不到GBK以外的漢字。
作者簡介:
鄒本娜,女,遼寧鞍山人,中共葫蘆島市委黨校,計算機專業講師,研究方向為計算機科學與應用。