中文編碼:CNS-11643, Big-5, CCCII

中文的字集與編碼設計,最早起步、也可能是最完整的, 是 CCCII (Chinese Character Code for Information Interchange) 碼。 但是,據說是由於一些人為因素,這個碼始終未能在臺灣成為標準。 就標準而言,臺灣的政府始終不能一舉而定,十幾年來一再修改, 至今的國家標準字集與編碼標準,稱為 CNS-11643,或簡稱 CNS 碼, 或是國家標準碼。注意不要簡稱之為 國標碼, 因為這是大陸政府所定的簡體字碼,英文的拼音是 Guo-Biao 碼, 因此又記做 GB 碼。 在臺灣,至少是民間,CCCII 和 CNS 都不是主流, 主流的反而是一個來源非常不明的所謂 大五碼:Big-5。

Big-5 定義了一套字集,一共是 13461 個元素, 其中有 408 個符號和所謂常用字 5401 個,次常用字 7652 個。 Big-5 碼就是為這一套字集中的每一個元素編一個唯一的號碼。 由於一個字元 (byte) 最多只能編排 256 個號碼, 它顯然不夠拿來編排 Big-5 字集的所有元素。 又因為字元已經成為電腦上記憶體的最小使用單位, Big-5 碼就選了兩個字元來為其字集編碼。

為了和 ASCII 相容,Big-5 碼的設計是讓字碼的第一個字元屬於高字元。 大部分的電腦硬體和軟體都生在美國, 所以 ASCII 很自然就成了電腦之間的共同母語。 而後來加入行列的中國人,日本人,韓國人,阿拉伯人的電腦, 在一開始的時候也都是說這種「外國話」的。

東亞語文系統的基本字彙都遠超過 256 這個數。 早期,以日本為首,採用如同我們的 Big-5 的方法。 一方面,為了有足夠的數字拿來編碼,必須用兩個位元對應字集中的一個元素。 讓我們稱第一個碼為首碼,第二個為次碼。 二方面,為了與 ASCII 相容,至少首碼必須是一個高位元。 既然與 ASCII 相容,所有 ASCII 中所定義的基本格式控制碼就都可以沿用, 所以後來定義的字集中就不需要另加控制碼。 這種原始的日本編碼系統 (shift-JIS) 現在據說已不太普遍, 他們大部分已經跟隨新的標準 (JIS X 0208-1990)。 這個新標準已經被擴充成一個國際雙位元編碼系統的標準, 由國際標準協會 (ISO) 制訂並建議各國使用。 我國的國家中文標準交換碼就符合這個建議,見於後。

Big-5 首碼在 161 (0xA1) 到 254 (0xFE) 之間。 次碼在 64 (0x40) 到 126 (0x7E), 或 161 到 254 之間。 若次碼填滿,則每個首碼應有 63+94 = 157 個字。

首碼 161,162,163 放全形符號,但 163 沒放滿。 常用字之首碼從 164 開始,至 198 (0xC6)結束。 共有 35 個,而

5401 - 157 * 34 = 63
故 198 也沒有放滿,恰好只放了 64 到 126 之間。

首碼 199,200 是空的。 次常用字從 201 (0xC9) 開始,到 249 (0xF9) 結束。 第 249 碼也沒有放滿,次碼在 64--126,161--213 之間,共有 63+53 = 116 格。 此為 Big-5 字集所定義之

157 * 48 + 116 = 7652
個次常用字。 但倚天的 Big-5 字集在 213 之後加了七個異體字。 首碼 250--254 是空的。

中央標準局在 1992 年公布的標準交換碼。 這個碼的編排符合國際標準協會的建議,目前共有七個字面, 每個字面排入

94 * 94=8836
個字碼 (兩個字元一個碼,介於 33 和 126 之間)。 第一二字面所選定的字基本上與 Big-5 相同, 但改正了幾個 (也許是所有的) 錯誤。 第三到七字面定義了三萬多個罕用字,或體字,異體字, 和一些只出現在算命先生的命名學上的奇奇怪怪的字: 它們的字碼以及字型。 八到十六字面空著,第十二字面是 user defined。 還有很多擴充的空間。 詳情見於後。

我國的 CNS 碼已經在國際標準協會註冊,我們應該儘量跟隨這個標準。 我的學識不足以評斷這些在第三到第七字面的字是否完整或排序妥當, 因為它們全是我不認識的字。 如果真的還能找到一個曾在中國典籍上出現但不被列入 CNS 七個字面的字, 我建議不要使用所謂 user defined 的第十二字面, 而是應該運用網路大眾傳播的力量,加上政治游說的力量, 讓 CNS 標準隨著我們的需求而擴大或更新。 因為,所謂 user defined,到最後一定是一團沒用的稀泥。

由中國大陸的國標碼 (GB) 所定義的中文簡體字字集,總數少於 8836。 而且它的編碼系統本來就合乎國際標準協會的建議。 簡體字的暢行和 Big-5 的暢行類似,都是無奈而必須承認的既成事實。 所以我個人很希望在 CNS 的其中一個字面上放進國標碼。

由經濟部中央標準局制訂的這一套中文標準交換碼, 應該是中華民國 (在臺灣) 的國家電子資訊標準碼。 現行的標準是 CNS-11643,於一九九二年五月二十一日頒佈。 可笑的是我在一九九四年五月初才從網路上外國朋友處得知這個消息。 當時是幾位朋友在討論擴大中文字集的話題,本來都圍繞 Big-5 或 Unicode 打轉, 一直到有位在英國的外國友人說他聽說我們有一個「國家標準」, 借問我能不能介紹一下。 我那才趕緊請了一位學生到中央標準局去取經。 拿回來一本三百餘頁的列表,裡面幾乎二話不說, 就只是把所有字碼和它所對應的標準寫法,一一列在紙上,每頁一百六十個字。 這些列印出來的字,都是用整套標準中所附帶的 40x40 的點陣字印出來的。 我們也取回了這些點陣字的電子檔案,並將之放在網路上公開。 至少有來自美國,英國,澳洲和日本的伙伴已經拿走了這些檔案。 在美國留學的一位同學,為這一套字作了 HBF (Hanzi Bitmap File) 格式。 這些點陣字的製造日期記錄是九四年三月九日。

CNS-11643 的兩個前身是 CNS-5205 和 CNS-7654。 舊版的標準據說與新版的相容,但我無從查證。 反正沒多少差別,舊版的使用者可能很少。 最早頒佈的時間看起來是一九八六年八月四日。

他們將 CNS 定義的整個字集分成十六個字面, 其中第一到七個字面已有定義,八到十一還空著, 十二到十六要保留給使用者造字區。

每一個字面定義至多 94*94=8836 個字, 每一個字用兩個介於 33--126 (0x21--0x7E) 的字元來編碼。 這些字元對應 ASCII 字集中的鍵盤字。

字面一
  1. 684 個符號,包括注音符號,中國字部首, 比標準 Big-5 字集中定義的多了 273 個。
  2. 5401 個常用字,包括教育部頒佈的 4808 個常用國字, 與 Big-5 字集中定義的 5401 個常用字相同,但是更正了幾個 Big-5 的錯誤次序。 這些錯誤在專業工作者之間可能是熟知的。 四項錯誤源自筆畫的誤算 (耄銬薦嚨),一項源自部首的誤植 (羅)。
字面二
7650 個次常用字。基本上也與 Big-5 字集中定義的次常用字相同, 除了更正了次序之外 (據清大博士候選人張景新先生告訴我,有八九項錯誤), 又剔除了兩個字。 根據日本的 Kenichi Handa 博士於九四年六月五日在網上提出的觀點, 這兩個字要不就不存在,要不就重複了。 分別是 (Big-5 碼的) (0xC9 0x4A),看起來像是兀,已定義於 (0xA4 0x61) (倉頡輸入碼的一山,可能會看到兩個兀); (0xDD 0xFC),看起來與 (0xDC 0xD1) 的嗀相同 (倉頡輸入碼土口竹弓)。
當然,這種說法頗為可疑。 計算機只認字碼,它無從知道對應某個字碼的字該怎麼寫。 所以一套字碼的定義,必須匹配一套標準寫法,或字體表。 我找不到所謂的 Big-5 字集標準字體表。 但是從我所看到的幾種不同的採樣,這兩對碼所造成的點陣字都是看來相同。
字面三
由行政院主計處於一九八八年整理出來的 6148 個罕用字和異或體字。 舊版中放在第十四字面。 倚天在標準 Big-5 字集之後又加了七個字 (所以編碼的次序必定不對了)。 比如說 Acer 的中文名字的第二個字,是「棋」的或體字, 以及「裡」字的另外一個寫法。 這些字都定義於此。 但我不巧在這裡發現一個重複定義的字; 這個字的部首與前一個字面中同字的部首不同.
我在幾篇佛教電子文件中看到幾個或體字, 例如左女右亥這個字 (0x2C 0x21), 左爿右木這個字 (0x2 0x97), 左女右石這個字 (0x28 0x41), 上物下心這個字 (0x3B 0x58) 以及左立右令這個字 (0x33 0x26), 都出現在這個字面。
字面四
戶政用字,各單位或資訊業者的特別字,共 7298 個。 例如門中三人這個字就在這裡 (0x48 0x22)。
字面五
教育部頒佈之罕用字,且尚未出現於前四個字面者,凡 8603 個字。
字面六
教育部頒佈之異體字,筆畫在十四以下且尚未出現於前五個字面者,凡 6388 個字。
字面七
教育部頒佈之異體字,筆畫在十五以上且尚未出現於前六個字面者,凡 6539 個字。

課外讀物:
[1] CNS 11643 中文標準交換碼全字庫伺服器 (含 Big-5 擴充碼之介紹) http://www.cns11643.gov.tw
[2] 教育部國語推行委員會之【國語辭典】【語文叢書】【辭典附錄】 http://www.edu.tw/mandr/clc/dict/
[3] 【我的倉頡】網站,也有 CCCII 碼的教育資訊。 原址: http://mycj.tale.net 中大數學的鏡射地址: http://www.math.ncu.edu.tw/mcl/mycj
[4] 單維彰的電子中文網頁: http://www.math.ncu.edu.tw/~shann/Chinese/


[ 發表感想或意見 ] ‧ [ 讀者推薦課外讀物 ]
單維彰 (95/10/07) --- 00/05/28, 00/10/04