|
在計算機(jī)中,對非數(shù)值的文字和其他符號進(jìn)行處理時,要對文字和符號進(jìn)行數(shù)字化,即用二進(jìn)制編碼來表示文字和符號。其中西文字符最常用到的編碼方案有ASCII編碼和EBCDIC編碼。對于漢字,我國也制定的相應(yīng)的編碼方案。 1、ASCII編碼 微機(jī)和小型計算機(jī)中普遍采用ASCII碼(American Standard Code for Information Interchange,美國信息交換標(biāo)準(zhǔn)代碼)表示字符數(shù)據(jù),該編碼被ISO(國際化標(biāo)準(zhǔn)組織)采納,作為國際上通用的信息交換代碼。 ASCII碼由7位二進(jìn)制數(shù)組成,由于27=128,所以能夠表示128個字符數(shù)據(jù)。參照如表3-2所示的ASCII表,我們可以看出ASCII碼具有以下特點(diǎn): (1)表中前32個字符和最后一個字符為控制字符,在通訊中起控制作用。 (2)10個數(shù)字字符和26個英文字母由小到大排列,且數(shù)字在前,大寫字母次之,小寫字母在最后,這一特點(diǎn)可用于字符數(shù)據(jù)的大小比較。 (3)數(shù)字0~9由小到大排列,ASCII碼分別為48~57,ASCII 碼與數(shù)值恰好相差48。 (4)在英文字母中,A的ASCII碼值為65,a的ASCII碼值為97,且由小到大依次排列。因此,只要我們知道了A和a的ASCII碼,也就知道了其他字母的ASCII碼。 表1 ASCII碼表 ASCII碼是7位編碼,為了便于處理,我們在ASCII碼的最高位前增加1位0,湊成8位的一個字節(jié),所以,一個字節(jié)可存儲一個ASCII碼,也就是說一個字節(jié)可以存儲一個字符。ASCII碼是使用最廣的字符編碼,數(shù)據(jù)使用ASCII碼的文件稱為ASCII文件。 2、 ANSI編碼和其他擴(kuò)展的ASCII碼 ANSI(美國國家標(biāo)準(zhǔn)協(xié)會)編碼是一種擴(kuò)展的ASCII碼,使用8個比特來表示每個符號。8個比特能表示出256個信息單元,因此它可以對256個字符進(jìn)行編碼。ANSI碼開始的128個字符的編碼和ASCII碼定義的一樣,只是在最左邊加了一個0。例如:在 ASCII編碼中,字符“a”用1100001表示,而在ANSI編碼中,則用01100001表示。除了ASCII碼表示的128個字符外,ANSI碼還可以表示另外的128個符號,如版權(quán)符號、英鎊符號、希臘字符等。 除了ANSI編碼外,世界上還存在著另外一些對ASCII碼進(jìn)行擴(kuò)展的編碼方案,ASCII碼通過擴(kuò)展甚至可以編碼中文、日文和韓文字符。不過令人遺憾的是,正是由于這些編碼方案的存在導(dǎo)致了編碼的混淆和不兼容性。 3、EBCDIC編碼 盡管ASCII碼是計算機(jī)世界的主要標(biāo)準(zhǔn),但在許多IBM大型機(jī)系統(tǒng)上卻沒有采用。在IBM System/360計算機(jī)中,IBM研制了自己的8位字符編碼——EBCDIC碼(Extended Binary Coded Decimal Interchange Code,擴(kuò)展的二-十進(jìn)制交換碼)。該編碼是對早期的BCDIC 6位編碼的擴(kuò)展,其中一個字符的EBCDIC碼占用一個字節(jié),用8位二進(jìn)制碼表示信息,一共可以表示出256 種字符。 4、Unicode編碼 在假定會有一個特定的字符編碼系統(tǒng)能適用于世界上所有語言的前提下,1988年,幾個主要的計算機(jī)公司一起開始研究一種替換ASCII碼的編碼,稱為Unicode編碼。鑒于ASCII碼是7位編碼,Unicode采用16位編碼,每一個字符需要2個字節(jié)。這意味著Unicode的字符編碼范圍從0000h~FFFFh,可以表示65536個不同字符。 Unicode編碼不是從零開始構(gòu)造的,開始的128個字符編碼0000h~007Fh就與ASCII碼字符一致,這樣就能夠兼顧已存在的編碼方案,并有足夠的擴(kuò)展空間。從原理上來說,Unicode可以表示現(xiàn)在正在使用的、或者已經(jīng)沒有使用的任何語言中的字符。對于國際商業(yè)和通訊來說,這種編碼方式是非常有用的,因?yàn)樵谝粋€文件中可能需要包含有漢語、英語和日語等不同的文字。并且, Unicode還適合于軟件的本地化,也就是針對特定的國家修改軟件。使用Unicode,軟件開發(fā)人員可以修改屏幕的提示、菜單和錯誤信息來適合于不同的語言和地區(qū)。目前,Unicode編碼在Internet中有著較為廣泛的使用,Microsoft和Apple公司也已經(jīng)在他們的操作系統(tǒng)中支持Unicode編碼。 盡管Unicode對現(xiàn)有的字符編碼做了明顯改進(jìn),但并不能保證它能很快被人們接受。ASCII碼和無數(shù)的有缺陷的擴(kuò)展ASCII碼已經(jīng)在計算機(jī)世界中占有一席之地,要把它們逐出計算機(jī)世界并不是一件很容易的事。 3.4.6 國家標(biāo)準(zhǔn)漢字編碼(GB2312-80) 國家標(biāo)準(zhǔn)漢字編碼簡稱國標(biāo)碼。該編碼集的全稱是“信息交換用漢字編碼字符—基本集”,國家標(biāo)準(zhǔn)號是“GB2312-80”。該編碼的主要用途是作為漢字信息交換碼使用。 GB2312-80標(biāo)準(zhǔn)含有6763個漢字,其中一級漢字(最常用)3755個,按漢語拼音順序排列;二級漢字3008個,按部首和筆畫排列;另外還包括682個西文字符、圖符。 GB2312-80標(biāo)準(zhǔn)將漢字分成94個區(qū),每個區(qū)又包含94個位,每位存放一個漢字,這樣以來,每個漢字就有一個區(qū)號和一個位號,所以我們也經(jīng)常將國標(biāo)碼稱為區(qū)位碼。例如:漢字“青”在39區(qū)64位,其區(qū)位碼是3964;漢字“島”在21區(qū)26位,其區(qū)位碼是2126。 國標(biāo)碼規(guī)定:一個漢字用兩個字節(jié)來表示,每個字節(jié)只用前七位,最高位均未作定義。但我們要注意,國標(biāo)碼不同于ASCII碼,并非漢字在計算機(jī)內(nèi)的真正表示代碼,它僅僅是一種編碼方案,計算機(jī)內(nèi)部漢字的代碼叫做漢字機(jī)內(nèi)碼,簡稱漢字內(nèi)碼。 在微機(jī)中,漢字內(nèi)碼一般都是采用兩字節(jié)表示,前一字節(jié)由區(qū)號與十六進(jìn)制數(shù)A0相加,后一字節(jié)由位號與十六進(jìn)制數(shù)A0相加,因此,漢字編碼兩字節(jié)的最高位都是1,這種形式避免了國標(biāo)碼與標(biāo)準(zhǔn)ASCII碼的二義性(用最高位來區(qū)別)。在計算機(jī)系統(tǒng)中,由于機(jī)內(nèi)碼的存在,輸入漢字時就允許用戶根據(jù)自己的習(xí)慣使用不同的輸入碼,進(jìn)入計算機(jī)系統(tǒng)后再統(tǒng)一轉(zhuǎn)換成機(jī)內(nèi)碼存儲。 5、 其他漢字編碼 除了我們前面談到的國標(biāo)碼之外,還有另外的一些漢字編碼方案。例如,在我國的臺灣地區(qū),就使用Big5漢字編碼方案。這種編碼就不同于我們的國標(biāo)碼,因此在雙方的交流中就會涉及到漢字內(nèi)碼的轉(zhuǎn)換,特別是Internet的發(fā)展使人們更加關(guān)注這個問題?,F(xiàn)在雖然已經(jīng)推出了許多支持多內(nèi)碼的漢字操作系統(tǒng)平臺,但是全球漢字信息編碼的標(biāo)準(zhǔn)化已成為社會發(fā)展的必然趨勢。
|