一、Unicode的淵源
1、Unicode的誕生
Unicode編碼字符集(Unicode Coded Character Set)源自于美國。我們知道,最早的編碼字符集是采用的7位二進制編碼,如美國信息交換標準代碼(ASCII)。7位二進制編碼可以有27 = 128個編碼位組,最多能為128個字符進行編碼。然而當字符中包含文字字符(如漢字及世界其它國家文字等)時,128個編碼位組顯然是不夠用的。
欲具體了解ASCII編碼字符介紹的請進入。
于是,在1987年初,美國的施樂(Xerox)公司的Joe Becker倡議將計算機字符集編碼碼位擴充到更的多位數(shù),以收納世界上各國各種文字,并開始研究,其研究的內(nèi)容主要體現(xiàn)在下表1-1所示的方面,但重點是兩個:
表 1-1:Unicode起步所研究的內(nèi)容
一是采用的編碼位數(shù)。其實在當時,國際上已有不少字符集編碼標準采用了16位(雙字節(jié))編碼,如我國的GB 2312-80、臺灣的Big5等。于是,Xerox公司的研究時考慮16位編碼,采用16位編碼,其碼位位組可達216 = 65536個編碼位組。當初Xerox公司研究的時65536個編碼位組是否能夠容納全世界所有文字字符的編碼。最終研究的結(jié)果是,采用16位二進制編碼(雙字節(jié)),應(yīng)該可以對全世界所有文字字符進行編碼。這里需要指出的是,他們這種決定對于漢字,尤其是中、日、韓所用漢字采用統(tǒng)一編碼,且是按抽象字符編碼,而不是對字形或者字意編碼。
二是采用的碼位長度。決定采用雙字節(jié)編碼后,面臨兩個選擇:一是采用變長編碼形式(如我國的 GB 2312標準),對于 ASCII 字符使用一個字節(jié),其它字符使用兩個字節(jié);另一種是采用定長編碼形式,不管是不是 ASCII 字符,所有字符編碼統(tǒng)一使用兩個字節(jié)。最終研究的結(jié)果是,采用定長編碼形式。采用定長編碼形式的好處是顯而易見的,就是避免了使用代碼擴充技術(shù)。
鑒于上述的研究,最終的研究成果于 1988 年 8 月以草案的形式發(fā)布(后稱為 Unicode 88)。他們將其字符集編碼標準被命名為“Unicode”,在我國又翻譯稱統(tǒng)一碼、聯(lián)合碼或萬國碼。為了推動Unicode的開發(fā)與應(yīng)用,1991年當時的美國一些信息技術(shù)公司,如IBM、DEC、Sun、Xerox、Apple、Microsoft、Novell等公司共同出資在加州成立Unicode聯(lián)盟(The Unicode Consortium),并由協(xié)會設(shè)立非贏利的Unicode公司,來推動Unicode的開發(fā)與應(yīng)用工作。
欲具體了解GB 2312-80漢字編碼字符介紹的請進入。
2、Unicode標準的歷程
于是,在Unicode 88草案的基礎(chǔ)上,于1991年10 月發(fā)布了 Unicode 的第一版(Unicode 1.0.0)。該版僅包含 24 種語言文字共 7163 個字符,但該版本中并未包括CJK漢字。在1992年6月發(fā)布了 Unicode 的第二版(Unicode 1.0.1);該版本中加入了20902 個CJK統(tǒng)一漢字。下表1-2-1匯總了Unicode標準版本信息,包括版本號與發(fā)布年份等。2021 年 9 月發(fā)布Unicode 14.0.0版本,該版本支持 159 種文字,共包含 144697 個字符(包括控制字符、文字符號、表情符號等)。目前,Unicode 15.0.0 版本已于2022年9月發(fā)布。該版本增加了 4488 個字符(包括20 個新的表情符號(Emoji)字符和4193個CJK表意文字),共有 149186個字符。
表 1-2-1:Unicode標準的版本信息(截止到2023年1月)
注意,Unicode標準新的版本將是代替以前的版本。Unicode 標準的版本號是由三個字段組成,分別依次表示主要版本、次要版本和更新版本。它們的含義區(qū)別詳見下表1-2-2。
表 1-2-2:Unicode標準新的版本號的含義區(qū)別
二、與ISO的合作
1、關(guān)于ISO的研究
其實,早在1984年,國際標準化組織(ISO)就啟動了通用多八位編碼字符集(UCS)的項目研究,初始的技術(shù)方案遭到了美國上述部分信息技術(shù)公司的抵觸的。從“通用多八位編碼”的名字就可以看出ISO采用的多字節(jié)編碼,即單字節(jié)、雙字節(jié)乃至四字節(jié)的不定長編碼的方案,對于ASCII 字符仍采用單字節(jié)長度編碼;對于世界文字字符常采用雙字節(jié)編碼,同時設(shè)計了四字節(jié)編碼,需要時可將文字字符置于四字節(jié)編碼區(qū)。顯然,ISO研究制定的字符編碼體系是優(yōu)越的,其容量宏大(編碼位組多)、字符編碼使用靈活(可按文字的字形、部首、筆畫等進行編碼)、兼容早期字符編碼方案(ASCII 字符編碼);適用于世界各種文字及符號,包括世界上曾經(jīng)出現(xiàn)過但現(xiàn)今很少使用的、以及今后將新產(chǎn)生的文字符號。
欲具體了解國際標準化組織(ISO)介紹的請進入。
與ISO 方案相比,Unicode 88草案中的方案明顯存在以下不足:
一是定長雙字節(jié)編碼無法與ASCII 字符編碼兼容。我們知道,采用7位編碼的ASCII 字符的編碼標準是在上世紀六十年代就開始實行了,這期間已大量地應(yīng)用于多種編程軟件及規(guī)范標準之中。Unicode 88開始對ASCII 字符采用雙字節(jié)編碼,就要求已應(yīng)用的7位編碼的ASCII 字符的編碼方案都重新修訂過來,這顯然是不現(xiàn)實的、是不切合實際的。
二是編碼位組容量相對捉襟見肘。Unicode 88采用16位二進制編碼,可以提供65536個編碼位組,在Unicode最初的研究中其容量是夠用的。因為研究的出發(fā)點是僅編碼現(xiàn)用的世界各國文字字符、很少考慮按字形編碼(尤其是CJK漢字,不考慮其文字的表意)等等。顯然這種出發(fā)點是好的,它可以簡化編碼體系,然而它卻限制了要編碼的文字符號,嚴重影響了實際中文字信息化的處理與通信。
2、Unicode與UCS的融合
從標準的組織制定形式上來講, ISO以國家成員體為基礎(chǔ)而制定的;Unicode則是以公司為基礎(chǔ)的集團制定的。相對于字符集編碼標準,ISO由各成員國的參與,標準的研究制定顯然更充分些、更周全些。鑒于上述Unicode 88草案方案的不足,1991年,在包括中國在內(nèi)的各ISO成員過和信息領(lǐng)域的許多信息技術(shù)(IT)大企業(yè)的推動下,Unicode與UCS兩大標準實現(xiàn)了相互對齊、合二而一。Unicode 1.0版和ISO/IEC第一個ISO草案DIS 10646.1進行了雙方都可接受的修改,將它們的組合庫合并為一個單一的數(shù)字字符編碼。這項工作在Unicode 1.1版中達到了高潮。
此后,這兩個標準一直保持著協(xié)調(diào)關(guān)系、同步發(fā)展。ISO/IEC 10646 -1:1993和Unicode 1.1標準的編碼字符(碼位和名稱)完全相同。Unicode 3.0版等同于ISO/IEC 10646-1:2000,Unicode3.1版等同于ISO/IEC 10646-2:2001。總體上,ISO/IEC 10646-1:2000與Unicode 3.0,ISO/IEC 10646-2:2001與 Unicode 3.1的內(nèi)容、編碼、命名是完全相同的。但在一些細節(jié)上,兩個標準仍然有一些差別的。關(guān)于Unicode標準與ISO/IEC 10646標準各版本之間的關(guān)系詳見下附件2。
附件 2:Unicode標準與ISO/IEC 10646標準各版本之間的關(guān)系
三、Unicode編碼字符集介紹
截止到2023年1月,Unicode 15.0.0 版本是Unicode編碼字符集的最新版本。它是由核心規(guī)范(其目錄詳見下表3所示)、代碼圖表、標準的附錄、Unicode字符數(shù)據(jù)庫(UCD)等構(gòu)成;若要詳細了解該版本核心規(guī)范具體內(nèi)容的請查閱下附件3;若要Unicode V15.0.0標準其它內(nèi)容請在其Unicode聯(lián)盟網(wǎng)站查閱。
表 3:Unicode V15.0.0核心規(guī)范目錄
附件 3:Unicode編碼字符集標準核心規(guī)范(V 15.0.0)
事實上,Unicode編碼字符集(Unicode Coded Character Set)與國際標準ISO/IEC 10646完全兼容并同步發(fā)展的一種通用的字符編碼標準,雖然他們各自發(fā)布自己版本的標準。
欲進一步了解UCS編碼字符介紹的請進入。