我們知道,計算機是西方人首先發(fā)明和使用的,他們理所當然地解決了拼音文字在計算機上的處理問題。而漢字是世界上惟一正在使用的表意文字,數(shù)量眾多,如何在計算機上處理好漢字是對這一古老文化的挑戰(zhàn)。計算機漢字處理技術,對推廣我國計算機應用及加強國際交流有著十分重要的現(xiàn)實意義。
在計算機上處理漢字要比處理西文字符復雜得多,處理漢字首先要確定漢字編碼字符集的問題,并要解決漢字的輸入、傳輸、存儲、顯示、輸出等一系列問題。在處理過程中每一個環(huán)節(jié)需要各自不同的編碼,因此產(chǎn)生了漢字編碼系統(tǒng)和漢字處理技術,也即計算機中的漢字編碼中稱之為的內(nèi)碼和外碼。
一、關于內(nèi)碼
內(nèi)碼是指存儲在計算機內(nèi)的相關漢字編碼,以供外碼所調(diào)用或提取。計算機中的漢字編碼中的內(nèi)碼,通常涉及到的類型是區(qū)位碼、交換碼(也有稱國標碼)及機內(nèi)碼等。之所以涉及到這些編碼,是因為早期對字符集編碼時采用的編碼方式不同,由早期的7位編碼過渡到后期的8位編碼,導致了7位編碼與8位編碼的共存,就涉及到它們間的兼容問題。另外,漢字字形碼和漢字地址碼也屬于內(nèi)碼的類型。
1、區(qū)位碼
“區(qū)位碼”的來歷源自于我國發(fā)布的第一個漢字編碼字符集GB/T 2312-1980《信息交換用漢字編碼字符集 基本集》。漢字編碼字符集是用于漢字信息處理、漢字通信等系統(tǒng)之間的信息交換。該字符集是對我國最常用的6763個漢字進行二進制編碼,采用雙字節(jié)編碼表示。其中,前面的字節(jié)為第一字節(jié),后面的為第二字節(jié),它們構成一個94×94的二維平面,即分成94行,94列,行號稱為區(qū)號,從1~94編號,由第一字節(jié)標識;列號稱為位號,也是從1~94編號,由第二字節(jié)標識。每一個漢字或圖形符號在碼表中都有各自的位置,字符的位置用它所在的區(qū)號(行號)及位號(列號)來表示,如下表1-1所示。因此,稱之為漢字的區(qū)位碼。區(qū)位碼是漢字在計算機存儲與交換的唯一數(shù)字代碼,如漢字“大”的區(qū)號是20,位號是83,它的區(qū)位碼是20-83,用雙字節(jié)二進制碼表示為00010100 01010011。
表 1-1:GB/T 2312-1980字符集的區(qū)位構成
欲詳細了解GB/T 2312-1980標準具體規(guī)定內(nèi)容的請進入。
然而,在該漢字編碼字符集(GB/T 2312-1980)中不僅對6763個漢字設置了區(qū)位碼,同時還對682個非漢字圖形字符(也稱圖形符號),其中包括有ASCII字符集中的圖形符號,被置于1~9區(qū)(漢字圖形字符是置于16~87區(qū)的),而在這里,這些圖形符號是按照GB/T 2311-80(ISO/IEC 2022)規(guī)定的7位編碼擴充方法,原ASCII字符集(ISO/IEC 646,等同采用為國內(nèi)標準是GB/T 1988-80)中是采用7位編碼的(目前在計算機內(nèi)的ASCII中的圖形字符就是7位編碼)。這就有可能存在7位編碼擴充與7位編碼的沖突的問題。
欲詳細了解ASCII編碼字符集介紹的請進入。
需要指出的是:區(qū)位碼源自于GB/T 2312,原因是它采用了區(qū)位編碼方式。然而我國目前使用的權威漢字字符集是GB 18030《信息技術 中文編碼字符集》。它采用的是單字節(jié)、雙字節(jié)和四字節(jié)多字節(jié)編碼方式,其中雙字節(jié)編碼部分包含了GB/T 2312所編碼的圖形字符(漢字和符號),關鍵是其雙字節(jié)編碼已不再采用94×94的區(qū)與位方式編碼了。
欲詳細了解GB 18030中文編碼字符集的請進入。
2、交換碼(國標碼)
相對于區(qū)位碼,為了避免與ISO 2022中用于通信的控制字符(0x00~0x1F)和空格字符(0x20)發(fā)生沖突,每個漢字的區(qū)號和位號必須分別加上32(即二進制0010 0000)。經(jīng)過這樣處理得到的代碼稱為漢字的“交換碼”。因此,“大”字的交換碼是:00110100 01110011。
也就是說,交換碼(國標碼)相當于將區(qū)位碼向后偏移了32,以避免與ASCII字符中的控制符號(具有數(shù)據(jù)的控制功能,不可顯示的符號字符,包括空格字符)相沖突。之所以如此,是因為GB/T 2312沒有對ASCII字符中的33個具有控制功能的符號進行重新編碼。為什么是后偏移了32而不是33,這是因為區(qū)位碼中的區(qū)編號和位編號都是從1開始計數(shù)的,不像ASCII碼是從0開始計數(shù)的。
3、機內(nèi)碼
當區(qū)位碼變換為交換碼(國標碼)后,仍然不能在計算機內(nèi)使用(存儲)。因為文本中的漢字字符與西文字符經(jīng)?;旌显谝黄鹗褂?,漢字信息如不予以特別的標識,它與單字節(jié)的標準ASCII碼就會混淆不清。還有因為國標碼雖然相較于區(qū)位碼避開了ASCII碼中(0~32的前33個控制字符),但并沒有避開ASCII碼中的英文字母、數(shù)字和符號等可顯示可打印的圖形字符(33~126,共94個字符)。
于是,常采用的方法之一就是把一個漢字看成兩個擴展ASCII碼,使表示GB 2312漢字的兩個字節(jié)的最高位都等于“1”。相當于每個字節(jié)都再加上128(即二進制的1000 0000;十六進制的0x80)。這種高位為“1”的雙字節(jié)(16位)漢字編碼就稱為GB 2312漢字的“機內(nèi)碼”,有時簡稱內(nèi)碼。目前,這種表示方式已經(jīng)成為GB 23122漢字內(nèi)碼的一種事實上的標準。上面所說的“大”字的機內(nèi)碼是:10110100 11110011(B4F3)。
下式和下圖1-3給出了區(qū)位碼、交換碼與機內(nèi)碼間的關系,以供參考。
機內(nèi)碼 = 交換碼 + 128(0x80)= 區(qū)位碼 + 32(0x20)+ 128(0x80)= 區(qū)位碼 + 160(0xA0)
圖 1-3:區(qū)位碼、交換碼與機內(nèi)碼間的關系
4、其它內(nèi)碼:字形碼、漢字地址碼
漢字字形碼和漢字地址碼也都是屬于存儲在計算機內(nèi)的漢字編碼,用以漢字的輸出(即顯示、打印等)。
字形碼就是表示漢字字形信息(結構、形狀、比畫等)的編碼,它的實現(xiàn)方法通常分為點陣形式和矢量形式,點陣形式是日常使用較多的形式,此時,字形碼是確定一個漢字字形點陣的代碼,也叫字?;驖h字輸出碼。字形碼就是這個漢字字形的點陣代碼根據(jù)顯示或打印質(zhì)量的要求,漢字字形編碼就有16×16,24×24,32×32,48×48等不同密度的點陣編碼。點數(shù)越多,顯示或打印的字體就越美觀,但編碼占用的存儲空間也越大。如16×16點陣的字形碼表示漢字是16行,每行16個點,一個點需要1位二進制代碼,16個點需用16位二進制代碼(即2個字節(jié)),共16行,所以需要16行×2字節(jié)/行=32字節(jié),即16×16點陣表示一個漢字,字形碼需用32字節(jié)。
當一個漢字需要輸出(顯示或打?。r,需要將漢字的機內(nèi)碼(如上述)轉換成字形編碼。漢字的字形點陣要占用大量的存儲空間,通常將所有漢字字形編碼集中存放在計算機的外存儲卡(器)中,稱為“字庫”,不同字體(如宋體、楷體等)對應不同的字庫。需要時才到字庫中檢索漢字并輸出,為避免大量占用寶貴的內(nèi)存空間,又要提高漢字的處理速度,通常將漢字字庫分為一級和二級,一級字庫在內(nèi)存,二級字庫在外存。
我國發(fā)布有大量的關于點陣字形碼的編碼國家標準(GB/T)及電子行業(yè)標準(SJ/T),這些標準是針對不同漢字字體、不同點陣、不同漢字字符集(如GB/T 2312、GB/T 13000、GB 18030等)而進行編碼規(guī)范的。如GB/T 25899.1-2019《信息技術 通用編碼字符集(基本多文種平面) 漢字32點陣字型 第1部分:宋體》,它規(guī)定的是GB/T 13000字符集和GB 18030字符集中的漢字的32點陣宋體字型,舉例“永”字的示意圖如下圖1-4所示。
圖 1-4:32點陣漢字“永”的宋體字型示意圖
由上述字形碼介紹可知,字形碼是存放在外存儲器里,每一個字模都有自己的存放地址,以便計算機提取字模之用。確定字形碼地址的二進制編碼就是漢字地址碼。
二、關于外碼:漢字輸入碼
對于計算機上漢字編碼的外碼,主要是指計算機漢字輸入碼。計算機使用者通過漢字輸入碼將漢字輸入到計算機中進行漢字信息的處理。我們知道,計算機輸入漢字的方法主要有兩種途徑:一種是自動識別輸入,包括漢字的自動識別和漢語言語的自動識別;另一種就是漢字鍵盤輸入。而漢字鍵盤輸入則是人們常用的方法,這里重點介紹計算機鍵盤輸入編碼。
計算機鍵盤是由西方人根據(jù)西方文字的特點而設計,已經(jīng)成為標準鍵盤,或稱通用鍵盤。那么對于漢字的鍵盤輸入,只有在該通用鍵盤上,結合漢字的特點(部首、部件、筆順、注音),通過編碼將鍵盤上相應的按鍵一一對應,而轉換(調(diào)用或提取)成計算機中的漢字內(nèi)碼(區(qū)位碼及機內(nèi)碼)。因此,漢字鍵盤輸入碼的作用:一是利用漢字的形、音及其它相關信息把通用鍵盤相應鍵位(一個或一組)的綁定;二是建立與計算機中相應漢字機內(nèi)碼的對應關系。
漢字鍵盤輸入碼,對于計算機使用者來講,重點是要掌握漢字信息與鍵位的對應方法,這就要漢字鍵盤輸入碼的編碼方法易學易用。而我們?nèi)粘3S玫妮斎刖幋a方法有:數(shù)字編碼、字音(拼音)編碼(如全拼輸入法、雙拼輸入法等)、字形(部首、筆畫及部件)編碼(如五筆輸入法、筆畫輸入法等)、字音字形結合編碼、智能編碼等等,它們各自的特點詳見于下表2中。
表 2:常用漢字鍵盤輸入編碼方法的特點
由于篇幅問題,這里不對每種漢字鍵盤編碼輸入法進行介紹。關鍵是,我國國家標準GB/T 19246《信息技術 通用鍵盤漢字輸入通用要求》規(guī)定了信息技術產(chǎn)品中用通用鍵盤進行漢字輸入時的通用要求,適用于基于通用鍵盤進行漢字輸入的漢字輸入法編碼方案、漢字輸入技術及其產(chǎn)品。對于上述提到的各種漢字編碼輸入法均應滿足GB/T 19246規(guī)定的要求,包括總體性能要求(易學性、平均碼長、重碼字詞鍵選率)、鍵位設置要求、編碼字匯(漢字編碼字符集)要求、編碼規(guī)范( 漢字部首序與筆順序及部件規(guī)范、拼音規(guī)范等)等等。
欲詳細了解GB/T 19246標準具體要求的請進入。
三、說明
由于我國的漢字是一種表意文字,因此其數(shù)量巨大,僅2022年版GB 18030中收納編碼的漢字的數(shù)量就達87887個,如此之多的漢字計算機的信息處理(包括輸入、存儲、交換、傳輸、顯示及輸出等)是一個龐大的系統(tǒng)工程,因此需要其計算機漢字編碼系統(tǒng),包括其相應的內(nèi)碼和外碼的建立、結合和使用,下圖3示意了計算機漢字編碼系統(tǒng)的一個總體關系結構,亦可以了解其內(nèi)碼和外碼的關系。
圖 3:計算機漢字編碼系統(tǒng)總體關系結構示意圖
另外,上述主要介紹的是計算機漢字的編碼,因為漢字字符是重點。事實上,全面的說,應稱為計算機中文的編碼,因為它已包括了可顯示/可打印的圖形符號字符(標點符號、字母符號、數(shù)字及序號符號等等);同時包括我國少數(shù)民族的文字字符。
欲進一步了解我國字符編碼字符集介紹的請進入。