中文的字集與編碼設計,最早起步、也可能是最完整的, 是 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 個,而
首碼 199,200 是空的。 次常用字從 201 (0xC9) 開始,到 249 (0xF9) 結束。 第 249 碼也沒有放滿,次碼在 64--126,161--213 之間,共有 63+53 = 116 格。 此為 Big-5 字集所定義之
中央標準局在 1992 年公布的標準交換碼。 這個碼的編排符合國際標準協會的建議,目前共有七個字面, 每個字面排入
我國的 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] 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