全字庫 中文標準交換碼

由於各國文字在字數、字型、使用方式和文化上之差異,自人類開始用電腦進行資訊處理以來,就面臨了不同國家間資料交換的困擾。國際間雖已有ISO 646、ISO 2022等編碼規範,可供各國據以制定其內碼或國家標準交換碼,並互相交換;但正如前面所提,不定長度的ESC序列控制碼,增加了資料處理的困難度。再說,任何國家均不可能也不必要將所有其它文字全數編碼在自己的字集標準中,而以今日變化劇烈的網際網路新世紀,要如何處理本國以外的電子訊息呢?
1.ISO 10646 研訂過程
為了解決不同國家間電腦字元資訊交換的困難,自1984年起,全球陸續出現兩個組織,希望能發展出全球可以共用的編碼字集。其中之一是國際標準組織ISO與國際電工聯盟IEC合組的第一聯合技術委員會下的SC2/WG2工作小組(ISO/IEC JTC1/SC2/WG2)。該小組草擬提出的ISO 10646標準草案,就是想集結全球通用的字符集,成為一個大聯集,以滿足各國資訊交換的需求。另外一個組織則是Unicode Consortium,也設法採用新的觀念和架構,來設計適用全球的廣用碼(Universal Code;簡稱Unicode,亦有人稱萬國碼)。這兩個組織的工作及方向雖然在一開始時是各自發展,但是最後終於殊途同歸,匯合產生目前甚受矚目的ISO 10646 /Unicode 標準,提供全球語言文字與符號之表示、傳送、交換、處理、儲存、輸入和顯示的共同編碼標準,不但避免了資源的浪費,並且真正落實了統一全球文字交換標準的理想。 ISO 10646標準從1984年ISO/IEC JTC1/SC2/WG2工作組成立,到1993年ISO 10646第一部分標準:「架構及基本多語文字面」(Architecture and Basic Multilingual Plane)印行為止,前後的發展階段長達十年,其間過程大致如下:
  • 1984.4 ISO/IEC
  • JTC1/SC2/WG2工作組成立
  • 987.3 制訂編碼架構
  • 1989.1 出版 1st DP (Draft Proposal)
  • 1989.12 出版 2nd DP
  • 1990.12 出版 1st DIS (Draft International Standard)
  • 1991.6 1st 投票通過
  • 1992.6 2nd DIS 投票通過
  • 1993.5 出版 ISO 10646-1 (Part I)
在ISO 10646第一版建議書草案中,將此標準定名為Multiple Octet Coded Character Set(多八位元組編碼字元集),並說明其編碼架構為四個八位元組,共組成128個群 (Group),每一個群有256個字面 (Plane),每一個字面有256×256個編碼空間,其中第32群的第32個字面為基本多語文字面(Basic Multilingual Plane;簡稱BMP)。到了1993年ISO 10646-1版本,此標準定名為Universal Multiple-Octet Coded Character Set(廣用多八位元組編碼字元集;簡稱UCS),BMP則定義在第0群第0個字面。在使用上,假如需用的字集都在BMP中,則只要使用兩個八位元組的編碼架構即可,否則就必須使用四個八位元組的編碼架構;而且這兩種編碼架構不能混合使用,不是使用兩個八位元組,就是使用四個八位元組的固定長度編碼架構,其用意就是要避免ISO 2022不定長度的缺點。 在這種情形下,參與制定ISO 10646的代表莫不儘量爭取把自己國家使用的字集編入BMP,目的就是希望能利用BMP只用兩個八位元組的優勢,取得比四個八位元組更高的資訊處理效率。BMP既是如此重要,而其編碼位置卻有限,因此如何充份利用這些編碼空間,處理更多常用字符集,就成為標準研訂時的一個重要考慮因素。原本在BMP的設計中,除編入西方拼音文字及符號外,在漢字方面只蒐集日本、南韓及中國大陸三個地區使用的漢字字集,並沒有考慮到我國的字集,我國遂積極組團以民間團體-台北市電腦商業同業公會(TCA)的名義,參加ISO 10646的制定,以爭取將我國使用的正體字編入BMP中。 基本上我國、大陸、南韓與日本所用的都是漢字,就編碼的理論而言,本不應該分開各自編碼,造成一字多碼的現象,與ISO 10646編碼之基本原則“一字一碼”相抵觸。我國及大陸的代表因此就共同提出了HCS (Han Character Set) 的構想,這個構想同時得到美國及其它國家代表的支持,進而一步步發展至今,在1993年公佈的ISO 10646-1之BMP中,已經將台灣、大陸、日本和南韓所使用之漢字整理整合成獨立的中日韓認同表意文字區(CJK Unified Ideographs),並予以編碼,使得亞洲幾個主要使用漢字的國家,得以有圓滿的解決方案。有關BMP字集在後文將續予介紹。 從1993年ISO 10646-1出版之後,儘管BMP 剩餘的空間十分有限,全球仍有許多國家文字等待納編入其中。而表意文字使用國家例如我國及大陸,也還有許多漢字需要擴編入此標準,因此截至目前為止,ISO 10646仍然在進行修訂與擴充。不過近幾年由於SC2/WG2與Unicode Consortium的密切合作,已經加快了ISO 10646修編的步伐,迄今已累積了近30項的標準補遺(Amendment)與技術校勘文件,十分驚人。根據WG2的預估,新版本ISO 10646可望於西元2000年出爐,而與其同步的Unicode 3.0版本可能在1999年第四季便先出版。
2.ISO 10646 整體架構及BMP的中日韓表意文字字集
前面提過ISO 10646為四個八位元組的編碼架構,圖示如下: 由上圖可看出整個UCS是由128個群組(Group 00~7F)所組成,每個群組均有256個字面(Plane 00~FF),每一字面有256個橫列(Row 00 – FF),每一橫列是由256個單元(Cell 00–FF)所組成,所以每一字面可有256×256=65,536個碼位可定義字元。 1993年版本中只有定義上述基本架構以及BMP的字元,至於其餘群組、字面均尚無規定。但在1996年之後,由於WG2訂定UTF-16轉換格式的使用方式,對於BMP以外的字面也作了定義,大致如下:
ISO 10646之第0群組 編碼內容 編碼形式
Plane 0(BMP) 全球常用字集(含非漢字及漢字) 雙八位元組編碼
Plane 1(第一輔助字面) 尚未編碼之非漢字字元集 四個八位元組編碼 使用UTF-16方式擷取字元
Plane 2(第二輔助字面) 尚未編碼之漢字字元集
Plane 3 ~ 13 保留未來編碼用
Plane 14 Tag 文字
Plane 15 ~ 16 用戶自定區
在1993年的版本中,BMP由A、I、O、R四大部份所組成。但經過增補修訂,已改為A、I、O、S、R五區,S區主要是用作UTF-16使用:
內 容 碼 位 可編碼數
A區 拼音字母、符號和其它符號 0000 ~ 4DFF 19,903
I區 中日韓漢字區 4E00 ~ 9FFF 20,992
O區 保留未來使用 A000 ~ D7FF 14,336
S區 UTF-16使用區 D800 ~ DFFF 2,048
R區 專用區(用戶╱業者) E000 ~ FFFD 8,192
雖然有如上的分區原則,但因編碼時的碼位及區塊的整體考慮,使得BMP現況 與上述分區有所差異。典型的例子如1998年剛擴編完成的「中日韓認同表意文字擴充A」字集6,582字,因為I區僅餘零星位置,因此就編入A區3400~4DFF的位置,而該區原為韓文拼音(Hangul)符號,但因後來韓文拼音移置O區,空出的碼位就給了「中日韓認同表意文字擴充A」,造成實際編碼與理論分區有別的現象。 在I區的中日韓漢字部份,最當初進行編碼時,因各國漢字型體不盡相同,必須先進行認同(unify)整理工作,SC2/WG2因此邀集有關各國指派專家組成CJK/JRG(中日韓聯合研究工作組,即IRG前身),進行字集的總整理。CJK/JRG歷經五次會議完成此項艱鉅工作,所整理的「中日韓認同表意文字」(CJK Unified Ideographs)參考了我國75年版CNS 11643之第1、2、14字面(T欄),大陸的GB 2312、GB 12345、GB 7589、GB 17590、GB 8565(G欄),日本的JIS X 0208、JIS X 0212(J欄)及南韓的KS C 5601、KSC 5667(K欄)等標準字符集,可說已包含這四地所常用的字。其字序主要是參考康熙字典、大漢和詞典、漢語大詞典及大字源字典,以先部首後筆劃的順序排列。CJK/JRG將此結果送交SC2/WG2編碼,完成了ISO 10646:1993 之BMP中I區的表意文字編碼標準,總計含20,902個漢字。其中包含了CNS 11643用字共有17,011個字。 在BMP「中日韓認同表意文字」中,因空間有限,未能將亞洲各國所使用的表意文字全部納入,難以滿足各國實際應用的需求,因此各國均感到BMP表意文字字集有再擴增的必要。為此ISO於1993年特在SC2/WG2之下成立IRG (Ideograph Rapporteur Group)工作組,專司BMP 「中日韓認同表意文字」區的內部/水平擴充(International / Horizontal Supplementation)及外部/垂直擴充(External / Vertical Extension)之整理工作。參與者包括中國大陸、台灣、日本、韓國、香港、Unicode Consortium、美國、越南及新加坡等。 IRG成立以來,循每年兩次、各國輪流舉辦之慣例,已舉行十二次會議,討論ISO 10646 BMP表意文字字集的擴充原則,並就各國提出之字集進行認同及整理。1998年IRG完成「中日韓認同表意文字擴充A」(CJK Unified Ideographs Extension A)字集6,582字,送交SC2/WG2通過,已預定編碼於BMP之A區的3400~4DFF,其中包含之CNS 11643用字共有5,879個。此一字集與原I區「中日韓認同表意文字」最大的差別在於它在G、T、J、K欄外,新增了屬於越南用字的V欄。 經過這兩階段漢字集的整理與擴編,BMP總計已編入27,484個表意文字,幾乎已無剩餘的大塊連續編碼空間。然而漢字為數眾多,且ISO 10646的第二輔助字面(Plane 2)原本即定義專供漢字擴充用,因此ISO 10646表意文字的擴編目前仍持續進行中。現階段IRG最重要的工作是「中日韓認同表意文字擴充B」(CJK Unified Ideographs Extension B)的整理。這套字集將涵蓋康熙字典全部用字、漢語大字典全部用字及大陸、台灣、韓國、越南、香港所提的國家標準字集,其目標是使ISO 10646標準能納入更多漢字,以滿足各國使用大字集的需求。作法上則是以康熙字典、漢語大字典為基礎,挑除已編入ISO 10646之字,再加上各國所提字集,依認同規則進行整理而成。擴充B字集預定將編入ISO 10646 第二輔助字面,目前整理的總字數已達4萬多字,其中含我國CNS 11643 第4~7字面共約3萬字。預計這部份擴編工作完成後,我國CNS 11643第1至7字面字集將有95%以上的用字全部納入ISO 10646標準中,剩餘的5%是被相互認同(unified)的字。 本文主要介紹中文有關的編碼標準,對於ISO 10646 BMP其他文字的編碼無法詳加介紹,讀者可參考文末附圖,以瞭解BMP各國文字的編碼情形。以下為ISO 10646 與亞洲表意文字使用國家及我國CNS國家標準有關部份:
4.UCS的編碼表示形式及使用方式
ISO 10646每一個字符都是以十六位元或三十二位元為一編碼單位,而非傳統的英文單位元組(1-byte)方式。從0000至FFFF(共65,536個碼位),除了0000-001F(C0) 與007F-00A0(C1)等控制碼外,均可用來組成文字碼位。它的編碼表示形式共有UCS-2及UCS-4兩種:
  • UCS-2:雙八位元組基本多語文字面形式(Two-octet BMP form) 專門用來表示BMP上的各個文字或符號,它只用到橫列和單元。
  • UCS-4:四個八位元組正準形式(Four-octet canonical form) 用以表示ISO 10646的所有文字, 每一文字均以32位元編碼(群組、字面、橫列和單元,每個各占八位元)來表示。
雖然四個八位元組的編碼形式,使ISO 10646得以有非常大的編碼空間,但是因為對現有資訊系統而言,實施四個八位元組的編碼系統需要作較大的改變,西方國家比較不傾向使用。ISO 10646因此又定義了UTF-16轉換格式(00群組16個字面的轉換格式),利用BMP的S區2,048個碼位,來擴充使用第00群組的第1到第16字面。其方式則是將BMP的D800到DFFF碼位分成兩部份,上半區D800~DBFF共1,024個碼位,下半區DC00~DFFF也是1,024個碼位,共可交叉定義出1,024×1,024=1,048,576個碼位,恰可對應到BMP之後第1~16字面的每個編碼位置。如此則保留雙八位元組的優點,同時亦可使用四個八位元組的大編碼空間。這種方式在Unicode標準中的定義叫作Surrogate,只不過Unicode又區隔出一段131,072個碼位的專用區(Private used Area),以下是兩者的比較:
碼位區間 ISO 10646 之UTF-16 Unicode 2.0之Surrogate
D800 ~ DB7F High-half zone High surrogate
DB80 ~ DBFF Private used high surrogate
DC00 ~ DFFF Low-half zone Low surrogate
其中DB80 ~ DBFF 共128個碼位×1024=131,072就是Surrogate指定的專用區。 另外,為了符合ISO 2022的通信及傳輸規定,避開八位元碼中的控制集,ISO 10646也定義了UTF-8轉換格式,可用於本文資料的傳輸,以通過對ISO 2022八位元組結構及CNS 7656控制字元敏感的通訊系統。
5.ISO 10646 的未來發展
由於國際資訊交流的日趨密切和多國語言交換之需求,已有越來越多的資訊廠商已經或正在以ISO 10646標準提供更完整之資訊處理環境。美國幾家大公司所組成的Unicode Consortium亦採納ISO 10646之BMP內容為Unicode標準,並積極進行系統的實作;中國大陸的中文訊息界專家亦在大陸積極推動ISO 10646之實作,因此ISO 10646對於中文碼標準的影響是不容忽視的。值此海峽兩岸互動關係正在改變,兩岸交流日益頻繁的時期,ISO 10646倒不失為兩岸中文碼共通標準的方案之一。海峽兩岸的中文資訊專家應可在目前ISO 10646的標準上,共同討論怎樣使ISO 10646之標準更適合兩岸之中文資訊處理,以及從資訊處理技術角度來看,如何加強雙方在這方面的合作,使得海峽兩岸的中文資訊處理技術更臻成熟。 附圖. ISO 10646之基本多語文字面(BMP)概觀
CNS11643 中文全字庫