一、概述
通用多八位編碼字符集(UCS,Universal Multiple-Octet Coded Character Set)是國際標(biāo)準(zhǔn)化組織(ISO)制定的一種字符編碼標(biāo)準(zhǔn),它是國際標(biāo)準(zhǔn)化組織ISO/IEC制定的旨在實現(xiàn)全球所有文字符號統(tǒng)一編碼的一項重要的國際標(biāo)準(zhǔn)。
1、UCS的淵源
字符集及其編碼是計算機系統(tǒng)中表示、儲存、處理和交換文本信息的基礎(chǔ)。有關(guān)統(tǒng)計表明,目前世界各個國家和民族幾乎有6 800多種不同的語言和文字在使用。隨著經(jīng)濟(jì)全球化,使用計算機處理、存儲和傳輸任意多種語言文字的需求日益迫切,因而必須為計算機系統(tǒng)建立一個多文種信息處理環(huán)境。
我們知道,ISO對字符編碼早就有ISO/IEC 646,它是采用7位二進(jìn)制數(shù)字對ASCII 字符進(jìn)行編碼,它提供了27 = 128編碼空間,對圖形字符符號和控制字符予以編碼而形成的字符代碼。然而,對于文字字符的編碼采用7位編碼顯然是不夠的。為了兼容已發(fā)布使用的ASCII 字符集(ISO/IEC 646),ISO又發(fā)布了ISO/IEC 2022,它是一個七位編碼向八位編碼過渡的標(biāo)準(zhǔn),以更便于計算機的信息交換,為后續(xù)的多字節(jié)編碼提供了一種擴(kuò)充方法。我國等同采用ISO/IEC 646和ISO/IEC 2022發(fā)布的標(biāo)準(zhǔn)是GB/T 1988和GB/T 2311。
欲詳細(xì)了解上述兩個標(biāo)準(zhǔn)的請進(jìn)入:GB/T 1988;GB/T 2311
許多年來,絕大多數(shù)計算機系統(tǒng)所采用的字符集都是以國際標(biāo)準(zhǔn)ISO/IEC 2022為基礎(chǔ)的。ISO/IEC 2022定義了七位代碼和八位代碼的空間及代碼空間的擴(kuò)充技術(shù),即除了標(biāo)準(zhǔn)ASCII 字符集之外,還有其它幾百種不同的擴(kuò)充字符集(包括我國的GB 2312和GBK漢字字符集)。不同字符集各有一個惟一的代碼頁號。當(dāng)文本中出現(xiàn)非ASCII 字符時,先使用代碼頁號指出它屬于哪一個字符集,然后才是該字符在字符集中的編碼。由于這些字符集沒有哪一個可以適用于所有的字母、標(biāo)點符號和常用的技術(shù)符號,其編碼還會互相沖突(不同字符集中可能使用相同的代碼代表兩個不同的字符,或使用不同的代碼代表相同的字符),因此不僅使用比較繁瑣,而且在不同的系統(tǒng)中交換數(shù)據(jù)時,總會有損壞的危險,因互不兼容。
于是,早在1984年,國際標(biāo)準(zhǔn)化組織(ISO)就啟動了通用多八位編碼字符集(UCS)的項目研究。所謂“通用多八位”,就是采用多個八位(字節(jié))對字符進(jìn)行編碼,若通常采用四個八位編碼,即可提供達(dá)13億個編碼空間,其用來容納世界所有文字是綽綽有余的。
2、UCS字符集的發(fā)布與修訂
基于ISO研究的通用多八位編碼(UCS)技術(shù),在1993年ISO首次發(fā)布了相應(yīng)的標(biāo)準(zhǔn),當(dāng)時是一個系列標(biāo)準(zhǔn),由兩部分構(gòu)成。在1993年首版發(fā)布時,僅發(fā)布了第1部分,在2000年對第1部分進(jìn)行了第1次修訂,隨后發(fā)布了第2部分。它們是:ISO/EEC 10646-1:2000《信息技術(shù) 通用多八位字符集 第1部分:結(jié)構(gòu)和基本的多文種平面》; ISO/EEC 10646-2:2001《信息技術(shù) 通用多八位字符集 第2部分:輔助平面》。2003年12月ISO將兩個部分合二為一,修訂為ISO/IEC 10646:2003《信息技術(shù) 通用多八位字符集(UCS)》,收納了基本的多文種平面和輔助平面的內(nèi)容。通用多八位字符集(UCS)的意義詳見下表1-2。
表 1-2:ISO通用多八位字符集(UCS)的意義
后期,ISO不斷的對ISO/IEC 10646進(jìn)行了多次修訂,在2020年對其進(jìn)行第6次修訂,發(fā)布為ISO/IEC 10646:2020《信息技術(shù) 通用字符集(UCS)》,名稱中取消了“多八位”一詞。事實上,ISO對10646的每次修訂,對編碼技術(shù)的內(nèi)容修訂變化不大;主要是對編碼字符集的不斷擴(kuò)充,即對世界各國的文字不斷地收錄到UCS字符集來,如CJK統(tǒng)一漢字?jǐn)U充,從擴(kuò)充A目前已到擴(kuò)充F。
3、我國等同采用ISO/IEC 10646的標(biāo)準(zhǔn)
我國在1993年等同采用(IDT)了ISO/IEC 10646-1:1993發(fā)布了國家標(biāo)準(zhǔn)GB 13000.1-1993。在2010年對其進(jìn)行了修訂,等同采用的是ISO/IEC 10646:2003,發(fā)布了國家標(biāo)準(zhǔn)GB 13000-2010《信息技術(shù) 通用多八位編碼字符集(UCS)》。它在2017年被國家轉(zhuǎn)化為推薦性標(biāo)準(zhǔn),不再強制。在2025年又等同采用了ISO/IEC 10646:2020,發(fā)布了國家標(biāo)準(zhǔn)GB/T 13000-2025《信息技術(shù) 通用編碼字符集(UCS)》。
欲詳細(xì)了解GB/T 13000標(biāo)準(zhǔn)修訂情況的請進(jìn)入。
二、UCS字符集簡介
下述主要依據(jù)GB/T 13000-2010標(biāo)準(zhǔn)對UCS字符集做一簡要介紹,且重點介紹UCS編碼的技術(shù)的內(nèi)容,對于編碼字符情況應(yīng)參見ISO/IEC 10646-2020標(biāo)準(zhǔn)。另外,GB/T 13000-2010是由33章和19個附錄所構(gòu)成,內(nèi)容太豐富。若要詳細(xì)了解GB/T 13000-2010標(biāo)準(zhǔn)具體內(nèi)容的請查閱下附件。
附件:GB/T 13000-2010《信息技術(shù) 通用多八位編碼字符集(UCS)》
溫馨提示:GB/T 13000-2025已代替了GB/T 13000-2010,待其出版發(fā)行后再依GB/T 13000-2025作介紹(事實上UCS編碼的技術(shù)原理變化并不大,變化重點是詞匯的擴(kuò)充和編碼空間的調(diào)整等)。
1、關(guān)于編碼體系結(jié)構(gòu)
UCS使用了一個被視為單一實體并由128個三維組構(gòu)成的四維編碼空間,它稱為正則形式,其結(jié)構(gòu)如下圖2-1-1所示;其下圖2-1-2為其代碼結(jié)構(gòu)示意;其下圖2-1-3給出了UCS的00組結(jié)構(gòu)的布局示意。每個組包含256個二維平面,每個平面包含256一維行,每個行包含256個字位。一個字符在這個編碼空間的一個字位上進(jìn)行編碼。每個字符均按照其組八位(G八位)、平面八位(P八位)、行八位(R八位)、字位八位(C八位)安排在UCS字符集中。為此,UCS規(guī)定了下表2-1所示的平面中的圖形字符和它們的代碼表示,平面類型包括基本多文種平面(BMP)、輔助多文種平面(SMP)、輔助表意文字平面(SIP)和輔助特殊用途平面(SSP)。(注意:在ISO/IEC 10646新版標(biāo)準(zhǔn)中又增加了三級表意文字平面(TIP))
圖 2-1-1:UCS的編碼結(jié)構(gòu)示意
圖 2-1-2:UCS的代碼空間示意
圖 2-1-3:UCS的00組的布局結(jié)構(gòu)示意
表 2-1:UCS規(guī)定的平面類型
UCS提供了4種字符編碼表示形式,即:雙八位BMP形式(UCS-2)、肆八位正則形式(UCS-4)、UTF-16形式和UTF-8形式。對于源自GB/T 1988(ISO/IEC 646)的字匯的字符(ASCII 字符)是它們在原編碼(7位編碼)中進(jìn)行簡單的加零擴(kuò)充而進(jìn)行編碼的,因次,當(dāng)用8位、16位或32位整數(shù)表示時,其編碼表示具有相等的整數(shù)值。
2、關(guān)于基本多文種平面(BMP)
可是,四字節(jié)的字符編碼太浪費存儲空間了。比較實際的做法是,在UCS編碼空間中,把第1和第2字節(jié)均為“0”的一個子空間,稱為基本多文種平面BMP(即00組00平面),作為它的子集來使用,記作UCS-2(-2表示雙字節(jié)編碼)。該平面可被用作雙八位編碼字符集。注意,UCS-2只包含BMP字匯,因此它與UCS-4、UTF-16和UTF-8不能完全互操作。在符合雙八位BMP形式(UCS-2)的編碼字符數(shù)據(jù)元素內(nèi),BMP平面中的一個字符應(yīng)有行八位(R八位)和字位八位(C八位)。
3、肆八位正則形式(UCS-4)-輔助平面
輔助平面是指除00組00平面(BMP)以外的其它平面,即指00組01平面到FF平面(各平面的安排見表2-1)。其中,01到10平面中的每個代碼位置都可以唯一的映射到UTF-16形式的肆八位序列,這種形式與UCS-2的雙八位BMP形式兼容。11到FF平面和其它組的所有平面留作后續(xù)標(biāo)準(zhǔn)化使用。輔助平面的字符均采用肆八位正則形式(UCS-4),即每一個字符是由組八位、平面八位、行八位和字位八位所組成。
4、UTF-16形式(00組16個平面的轉(zhuǎn)換格式)
UTF-16 (UCS Transformation Form-16)提供了一百多萬個UCS-4 圖形字符的編碼表示形式,這種形式與UCS-2的雙八位BMP 形式兼容。這樣就使得UCS-4 的字符可以與UCS-2 編碼的字符數(shù)據(jù)共存。在UTF-16中,BMP 字匯中的每個圖形字符都保留其UCS-2 的編碼表示形式。此外,00組16 個平面(1 048 576個碼位)的某一連續(xù)區(qū)域中任一字符的編碼由一對RC 元素(行八位和字位八位)組成,而每個這樣的RC 元素對應(yīng)于BMP 中8 行(2 048個碼位)的某個連續(xù)區(qū)域中的一個字位。這些代碼位置留給本編碼表示形式使用,不得用于其他目的。UTF-16的相關(guān)規(guī)定詳見下表2-4;具體轉(zhuǎn)換要求詳見GB/T 13000的附錄C。
表 2-4:UTF-16的相關(guān)規(guī)定
5、UTF-8形式
UTF-8是另外一種能對所有UCS 字符編碼的表示形式。它可用于在某些通信系統(tǒng)上傳送文本數(shù)據(jù),而這些通信系統(tǒng)假定00 到7F 范圍內(nèi)的單八位符合GB/T 11383 的定義,其中包括符合GB/T 2311 的8 位結(jié)構(gòu)的C0控制功能集。UTF-8 還避免使用那些敏感的八位值,這些值在應(yīng)用廣泛的文件處理系統(tǒng)中對文件名字符串進(jìn)行解析時具有特殊的含義。UCS 字符的UTF-8 編碼表示中,八位的個數(shù)是1到6;第一個八位的值指明該編碼表示形式中八位的個數(shù)。下表2-5-1給出了UTF-8的特點;具體轉(zhuǎn)換要求詳見GB/T 13000的附錄D。
表 2-5-1:UTF-8的特點
為了與目前大量使用的基于ISO/IEC 2022的單八位系統(tǒng)保持向下兼容,同時避免與數(shù)據(jù)通信中使用的控制碼發(fā)生沖突,UCS在實現(xiàn)時可以將雙字節(jié)代碼變換為可變長代碼,最常用的就是UTF-8形式,它按照下表2-5-2給出的規(guī)則,把雙字節(jié)的UCS-2編碼轉(zhuǎn)換為單字節(jié)、雙字節(jié)或三字節(jié)和四字節(jié)的UTF-8編碼。
表 2-5-2:UCS-2編碼到UTF-8編碼的部分轉(zhuǎn)換規(guī)則
從表中可以看出,標(biāo)準(zhǔn)ASCII 字符仍以單字節(jié)代碼(00H~7FH)表示,其他字符如CJK漢字和擴(kuò)充的拉丁字母、音節(jié)文字、標(biāo)點符號等,需要使用雙字節(jié)、三字節(jié)或四字節(jié)代碼表示。這樣,既保持了與傳統(tǒng)ASCII 文本兼容,避免了與數(shù)據(jù)通信中控制碼的沖突,又實現(xiàn)了各種字符集的統(tǒng)一編碼。目前,大多數(shù)UCS編碼都是以UTF-8編碼形式實現(xiàn)的。
三、UCS與Unicode、GB 18030字符集間的關(guān)系
Unicode字符集是當(dāng)初美國的一些IT公司,在1987年開始研究制定的、也是旨在對世界各國文件進(jìn)行統(tǒng)一編碼的一種字符集規(guī)范標(biāo)準(zhǔn)。剛開始其研制思路(主要是編碼技術(shù))有些不同,但鑒于ISO的UCS編碼字符集其技術(shù)上更為優(yōu)越,后來兩者進(jìn)行了融合,并一直保持著協(xié)調(diào)關(guān)系,同步發(fā)展,但各自發(fā)布著自己的標(biāo)準(zhǔn)文本。事實上,現(xiàn)在都把兩者統(tǒng)稱為UCS/Unicode字符集。
由我國自主研究制定的中文字符集標(biāo)準(zhǔn)GB 18030,在編碼技術(shù)上是支持UCS/Unicode字符集要求的,只是GB 18030結(jié)合我國文字的實際情況,只收錄了中文字符,包括漢字(含CJK統(tǒng)一漢字)、我國少數(shù)民族文字(近十種)和相應(yīng)圖形符號字符等。