一、介紹字符編碼、內(nèi)碼,順帶介紹漢字編碼
字符必須編碼后才能被計(jì)算機(jī)處理。計(jì)算機(jī)使用的缺省編碼方式就是計(jì)算機(jī)的內(nèi)碼。早
期的計(jì)算機(jī)使用7位的ASCII編碼,為了處理漢字,程序員設(shè)計(jì)了用于簡(jiǎn)體中文的GB2312
和用于繁體中文的big5。
GB2312(1980年)一共收錄了7445個(gè)字符,包括6763個(gè)漢字和682個(gè)其它符號(hào)。漢字區(qū)的內(nèi)
碼范圍高字節(jié)從B0-F7,低字節(jié)從A1-FE,占用的碼位是72*94=6768。其中有5個(gè)空位是
D7FA-D7FE。
GB2312支持的漢字太少。1995年的漢字?jǐn)U展規(guī)范GBK1.0收錄了21886個(gè)符號(hào),它分為漢字
區(qū)和圖形符號(hào)區(qū)。漢字區(qū)包括21003個(gè)字符。2000年的GB18030是取代GBK1.0的正式國(guó)家
標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)收錄了27484個(gè)漢字,同時(shí)還收錄了藏文、蒙文、維吾爾文等主要的少數(shù)民
族文字。現(xiàn)在的PC平臺(tái)必須支持GB18030,對(duì)嵌入式產(chǎn)品暫不作要求。所以手機(jī)、MP3一
般只支持GB2312。
從ASCII、GB2312、GBK到GB18030,這些編碼方法是向下兼容的,即同一個(gè)字符在這些方
案中總是有相同的編碼,后面的標(biāo)準(zhǔn)支持更多的字符。在這些編碼中,英文和中文可以
統(tǒng)一地處理。區(qū)分中文編碼的方法是高字節(jié)的最高位不為0。按照程序員的稱呼,
GB2312、GBK到GB18030都屬于雙字節(jié)字符集 (DBCS)。
有的中文Windows的缺省內(nèi)碼還是GBK,可以通過(guò)GB18030升級(jí)包升級(jí)到GB18030。不過(guò)
GB18030相對(duì)GBK增加的字符,普通人是很難用到的,通常我們還是用GBK指代中文
Windows內(nèi)碼。
這里還有一些細(xì)節(jié):
GB2312的原文還是區(qū)位碼,從區(qū)位碼到內(nèi)碼,需要在高字節(jié)和低字節(jié)上分別加上A0。
在DBCS中,GB內(nèi)碼的存儲(chǔ)格式始終是big endian,即高位在前。
GB2312的兩個(gè)字節(jié)的最高位都是1。但符合這個(gè)條件的碼位只有128*128=16384個(gè)。所以
GBK和GB18030的低字節(jié)最高位都可能不是1。不過(guò)這不影響DBCS字符流的解析:在讀取
DBCS字符流時(shí),只要遇到高位為1的字節(jié),就可以將下兩個(gè)字節(jié)作為一個(gè)雙字節(jié)編碼,而
不用管低字節(jié)的高位是什么。
二、關(guān)于編碼
所謂編碼,是以固定的順序排列字符,并以此做為記錄、存貯、傳遞、交換的統(tǒng)一內(nèi)部
特征,這個(gè)字符排列順序被稱為“編碼”。和中文字庫(kù)有關(guān)的常見(jiàn)編碼有:大陸GB碼、
GBK碼、港臺(tái)BIG-5碼等。下面簡(jiǎn)要介紹一下。
GB碼
全稱是GB2312-80《信息交換用漢字編碼字符集 基本集》,1980年發(fā)布,是中文信息處
理的國(guó)家標(biāo)準(zhǔn),在大陸及海外使用簡(jiǎn)體中文的地區(qū)(如新加坡等)是強(qiáng)制使用的唯一中
文編碼。P-Windows3.2和蘋(píng)果OS就是以GB2312為基本漢字編碼, Windows 95/98則以GBK
為基本漢字編碼、但兼容支持GB2312。
GB碼共收錄6763個(gè)簡(jiǎn)體漢字、682個(gè)符號(hào),其中漢字部分:一級(jí)字3755,以拼音排序,二
級(jí)字3008,以偏旁排序。該標(biāo)準(zhǔn)的制定和應(yīng)用為規(guī)范、推動(dòng)中文信息化進(jìn)程起了很大作
用。
1990年又制定了繁體字的編碼標(biāo)準(zhǔn)GB12345-90《信息交換用漢字編碼字符集 第一輔助
集》,目的在于規(guī)范必須使用繁體字的各種場(chǎng)合,以及古籍整理等。該標(biāo)準(zhǔn)共收錄6866
個(gè)漢字(比GB2312多103個(gè)字,其它廠商的字庫(kù)大多不包括這些字),純繁體的字大概有
2200余個(gè)。
Unicode編碼(Universal Multiple Octet Coded Character Set)
國(guó)際標(biāo)準(zhǔn)組織于1984年4月成立ISO/IEC JTC1/SC2/WG2工作組,針對(duì)各國(guó)文字、符號(hào)進(jìn)行
統(tǒng)一性編碼。1991年美國(guó)跨國(guó)公司成立Unicode Consortium,并于1991年10月與WG2達(dá)成
協(xié)議,采用同一編碼字集。目前Unicode是采用16位編碼體系,其字符集內(nèi)容與ISO10646
的BMP(Basic Multilingual Plane)相同。Unicode于1992年6月通過(guò)DIS(Draf
International Standard),目前版本V2.0于1996公布,內(nèi)容包含符號(hào)6811個(gè),漢字
20902個(gè),韓文拼音11172個(gè),造字區(qū)6400個(gè),保留20249個(gè),共計(jì)65534個(gè)。
GBK編碼(Chinese Internal Code Specification)
GBK編碼是中國(guó)大陸制訂的、等同于UCS的新的中文編碼擴(kuò)展國(guó)家標(biāo)準(zhǔn)。GBK工作小組于
1995年10月,同年12月完成GBK規(guī)范。該編碼標(biāo)準(zhǔn)兼容GB2312,共收錄漢字21003個(gè)、符
號(hào)883個(gè),并提供1894個(gè)造字碼位,簡(jiǎn)、繁體字融于一庫(kù)。
Windows95/98簡(jiǎn)體中文版的字庫(kù)表層編碼就采用的是GBK,通過(guò)GBK與UCS之間一一對(duì)應(yīng)的
碼表與底層字庫(kù)聯(lián)系。
BIG5編碼
是目前臺(tái)灣、香港地區(qū)普遍使用的一種繁體漢字的編碼標(biāo)準(zhǔn),包括440個(gè)符號(hào),一級(jí)漢字
5401個(gè)、二級(jí)漢字7652個(gè),共計(jì)13060個(gè)漢字。
方正748編碼
所謂748編碼,是指方正系統(tǒng)在長(zhǎng)期應(yīng)用過(guò)程中實(shí)施、制定的簡(jiǎn)、繁體字庫(kù)編碼方式,簡(jiǎn)
體兼容GB2312且有所擴(kuò)展,共7156字;繁體兼容GB12345并擴(kuò)展全部BIG-5漢字,計(jì)14943
字。此外,方正748編碼還含有豐富的符號(hào)庫(kù)。748編碼僅用于方正軟件和系統(tǒng)。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/coffeemay/archive/2006/04/17/666213.aspx