Big5

Big5(又稱大五碼)是繁體中文最通用的字集編碼標準,共收錄13,060個漢字*1

歷史與概要

由於台灣政府各部會都想自己主導資訊政策,帶有政府色彩的編碼標準就有CCCIICNS11643電信碼多種,有些難以實作、有些收字有問題。

業界為了希望盡快推出中文電腦產品,來不及等政府的編碼政策確定,資策會遂與國內13家廠商簽定「五大中文套裝軟體」開發計畫,並制定大五碼,作為內部處理使用(故當年習慣稱為「內碼」)。後來「五大中文套裝軟體」計畫雖然失敗,但隨著參與此計畫的倚天、國喬等公司推出的中文系統都採用 Big5 編碼,Big5 遂變成業界公認的標準。

Big5 的收字來源來自前一年 1983 年經濟部中央標準局公布的「通用漢字標準交換碼試用版」,主要來源是台灣教育部的標準字體表,缺少太多生活常用的異體字,亦缺乏部分港澳地區的用字。除漢字之外,也缺乏台灣民間經常使用的假名文字等。

但因 Big5 後來迅速普及於台灣、香港、澳門等地,缺字問題也隨之而來,故各地、各業者都試圖製作自己的補充版本,造成 Big5 的變種特別多。

2003年,Big5收錄到CNS11643中文標準交換碼的附錄當中,取得了較正式的地位。這個最新版本稱為Big5-2003。

位元組結構與區域

Big5碼是一套雙位元組字元集,以 2 個 byte 來安放一個字。第 1 個 byte 稱為「高位元組」,第 2 個 byte稱為「低位元組」。

「高位元組」使用了0x81-0xFE,「低位元組」使用了0x40-0x7E,及0xA1-0xFE。但在部分環境實作上,無法正確處理「高位元組」 0x81-0xA0 的範圍。

區域區塊內容
0x8140-0xA0FE保留給造字區(有些軟體不支援此區的Big5文字)
0xA140-0xA3BF標點符號、希臘字母、特殊符號(包括 0xA259-0xA261 九個漢字:兙兛兞兝兡兣嗧瓩糎)。
0xA3C0-0xA3FE保留。此區沒有開放作造字區用。(Big5-2003放了一些控制字元在這裡)
0xA440-0xC67E常用漢字(5401字),主要來自教育部「常用國字標準字體表」所列4808字。先按筆畫再按部首排序。
0xC6A1-0xC8FE保留給造字區
0xC940-0xF9D5次常用漢字(7652字),字集主要來自教育部「次常用國字標準字體表」所列6330字,先按筆畫再按部首排序。
0xF9D6-0xF9DC七個倚天擴充字,碁銹裏墻恒粧嫺(此非Big5原標準,但後續幾乎所有Big5變種,以及Windows、MacOS所收的Big5都有收錄)
0xF9DD-0xFEF保留給造字區

收字問題

重複收字

Big5重複收了兩個相同的字,此錯誤源自「通用漢字標準交換碼試用版」。在編入Unicode時,只好為重複字另外編碼相容漢字區。

文字Big5Unicode統合漢字Unicode相容漢字
0xA461 / 0xC94AU+5140U+FA0C
0xDCD1 / 0xDDFCU+55C0U+FA0D

藏在Big5符號區的漢字

Big5當年在符號區收了 9 個單位用字,在Unicode裡屬於統合漢字

文字Big5Unicode統合漢字
0xA259U+5159
0xA25AU+515B
0xA25CU+515D
0xA25BU+515E
0xA25DU+5161
0xA25EU+5163
0xA25FU+55E7
0xA260U+74E9
0xA261U+7CCE

Big5的蘇州碼區域收了10、20、30的記號,這部分較為複雜。

因為這幾個字基本上非常少用,所以現在的作業系統多半直接讓他映射到統合漢字的十、卅(但Big5未收漢字卄,還是要另外造)。但Unicode確實有在符號區編入這三個符號,故Big5-2003則認為應該映射到符號區的字元才對(不過實質上比較類似相容漢字的概念)。

此問題造成某些粗製濫造的中文字型,竟然「十」會缺字的問題。(可能是Unicode、Big5轉換的錯誤,字型裡雖然有「十」的字符,但對應到符號 0xA2CC 上。)

文字Big5Windows/macOS對應Big5-2003
0xA2CCU+5341(Big5常用字)U+3038(非漢字)
0xA2CDU+5344(Big5未收)U+3039(非漢字)
0xA2CEU+5345(Big5常用字)U+303A(非漢字)

常用國字標準字體表》於Big5未收的字

文字甲表序號CNS11643
U+5F5EA012661-7641

此字較為複雜,《常用國字標準字體表》認為「U+5F5E」是正字,全字庫第一字面收錄的也是「U+5F5E」;但多數的 Big5 實作,0xC255 收錄的是都是坊間多用的「U+5F5D」字(應是比照彙、綠等字)。僅 Big5-2003 將 0xC255 映射到 U+5F5E。推測是 CNS11643 曾經修改過範例字樣,並已於編入 Unicode 之前就已經修正,但此修正不影響多數 Big5 的既有實作。

次常用國字標準字體表》於Big5未收的字

文字乙表序號CNS11643備註
U+53C4B002873-3455
U+564DB004393-4B43
U+36B7B006353-2847
U+5B0EB007153-4B5F
U+5C14B007603-223F
U+3BA3B017833-4167
U+7934B030272-662B疑似 Unicode 統合時錯誤對應到統合漢字 U+7921
U+7DF5B034523-4E2BCNS11643 第二字面疑似誤收 U+7E4C
U+9638B055314-2833
U+9C0CB059893-5D76

其中 U+7934 字,在Big5內應有收(0xF2A1),但對應在 Unicode 統合漢字 U+7921 上。(早年的Big5字型,確實 0xF2A1 多顯示為有三點水的「礴」,但因為映射到 U+7921 的關係,以近年符合Unicode規格製作的新字型,會顯示成沒有三點水的「礡」。)推測是已經來不及修正的映射錯誤(Big5其實有收,但因為錯誤的Unicode映射,變成未收)。此一問題也遺留在現在的全字庫網站中,全字庫字型與本機字型明顯不一致。

各種變種

最初無變種的 Big5 版本有時候習慣稱為 Big5-1984。

民間主導

倚天擴充字集

倚天中文系統在Big5碼添加了以下字元(據聞多數是為了相容IBM5550碼,或許這可解釋為什麼來自日本的符號特別多),稱為倚天擴充字集

由於倚天中文系統市占率極大,此擴充字集特別通行。後述其他廠商的外字集,多半都繼承了大部分的倚天擴充字(除了行列輸入法)。Adobe-CNS1也有完整編入這些文字。

華康外字集、文鼎外字集

DOS時期,各字型公司就有推出自己的外字集,但各業者之間編碼並不相容。由於這些產品多數是造字檔形式,在Unicode時代後產品也未繼續維護(未公布與Unicode對照字碼表),難以轉換,幾乎都已完全消失。

CP950(Windows的Big5)

Windows 3.1起微軟採用的 Big5 編碼表,得名於微軟的繁體中文字碼頁 CodePage 950,是現在最通行的 Big5 變種。

CP950只收了倚天擴充字集中「碁銹裏墻恒粧嫺」7個漢字與表格符號的部分,其它字都沒有收。這也造成Windows時期繁體中文用戶在使用假名時仍然困難重重的原因。

Windows ME起的版本,又在 0xA3E1加入了歐元(€)符號。

中國海字集

中國海字集由中國海公司出品的造字檔,因為跟漢書、輕鬆輸入法等軟體一起搭售,是DOS時期使用最廣泛的外字集。除了倚天擴充字集外,還大量收錄了日文漢字、港澳漢字、簡化字、大量的圖案文字(早年的Emoji!?)。

在Windows普及初期,也積極製作了TrueType版本,造字品質比一些使用Windows造字程式做的點陣圖來說精緻不少,故一時也非常通行。甚至在香港增補字集尚未通行前,也流行於港澳地區。

Unicode補完計画(Big5-UAO)

相較於上述外字集多為造字檔形式,Unicode補完計畫則是2001年時,But Ko認為當年流行的Windows XP已採Windows NT架構,系統核心已經是Unicode,系統內建的新細明體、標楷體也都已經包含日文假名等多數文字,於是嘗試以魔改Windows內建CP950對照表的方式,讓系統可以直接支援假名等文字。

也就是說Unicode補完計画本質上真的是種Big5跟Unicode的對照表,而不是造字檔。本身也沒有造字檔,而是安裝以後可以直接顯示出系統字型內的假名等文字。

後來軟體中文化聯盟以同樣技術映射到中國海字集所有文字,雙方遂合意整合以Unicode補完計画單一名稱發佈,避免造成編碼版本太多。在最新的2.5版本,已經完整支援GB2312、Shift_JIS、HKSCS內定義之所有統合漢字(但不包括統合漢字擴充區的部分)。

優點是使用者不用再面對兩種不同的假名(Unicode的日文假名,跟原倚天擴充字集以造字形式對應到Unicode造字區裡的假名),而且因為公佈有字碼表,各種轉碼工具也較容易支援(如現在內建於多數BBS軟體)。

缺點則是動用魔改Windows字碼表的行為算是Hack,隨著Windows各版本的保護層級愈來愈高,安裝也愈來愈困難。且不熟悉原理的使用者可能會在重灌系統時搞砸轉換過的檔案等問題。


由於現在幾乎所有常用軟體都已經完整支援Unicode,一般情況下已經沒有使用的需要。不過由於中國海字集Unicode補完計畫在BBS非常通行,PCMan、Pitty、MoPTT、JPTT等各種BBS軟體都內建Big5-UAO字碼表。包括PTT官方的UTF-8模式也是使用Big5-UAO進行轉換。

官方主導

Big5+、Big5E

1997年行政院研考會委託中推會辦理Big5+擴編計畫,試圖效法GBK,納入Unicode 1.1下所有漢字。但因為需要塞入2萬多是字,只好用到超過Big5定義的編碼範圍(低位元組0x80-0xA0部分),並無法安裝在Windows上,只使用在政府少數UNIX環境的系統(但這樣不如用EUC-TW)。

後為使Windows使用者可以使用造字檔,研考會再度委託中推會推出一個較精簡的Big-5E(與Big5+不相容)字集,共收3954字。因編碼限制,這又無法收錄多數倚天擴充字集的字,不敷民間需求。造成只有政府單位因業務需要使用外,並沒有多少使用者。

Big5-2003

由於Big5長年不是官方標準,後中推會接受經濟部標準檢驗局委託,召集產官學者編製一個Big5的對照表,並把它放到CNS11643附錄裡,正式成為官方標準的一部分。

Big5-2003之中,除了收錄了1984年Big5所有的編碼字元之外,另外加入了微軟CP950的歐元(€)符號、倚天擴充字集的外字、假名等大多數文字(但沒有收錄西里爾字母,因為CNS11643沒有這些字元)。

另外它還試圖減少Unicode東亞文字字寬有問題的「模糊」部份,修改了某些符號的對應。也根據CNS11643最新的修正,U+5F5E 等部分文字的映射與大部分其他Big5的實作都不同。在很多文字的對應上,顯得比較理想化。

香港增補字符集(HKSCS)

因整個中文系統生態系緣故,香港原未推行自己的繁體中文字集編碼標準,而直接沿用台灣的Big5。但香港有許多人、地名與粵語用字,在Big5內都嚴重缺字,一直以來都倚賴坊間各種外字集來應付需求。

1995年,隨著Windows 95普及,一般用戶接觸中文電腦情形大增,港英政府於是公布了政府內部使用的外字集(GCCS;政府通用字庫)供大眾使用。後由特區政府中諮會改為HKSCS繼續維護。

早期的HKSCS原先是作為Big5的擴充(故常稱為Big5-HKSCS),除了完全相容於Big5-1984、支援大多數倚天擴充字集等,其他擴充的文字也都會各自定義Big5碼。

但HKSCS-2016起,已經不再作為Big5的擴充。雖然完全繼承先前版本定義的所有文字,但不再定義Big5碼,只定義Unicode

HKSCS早年收字規格不夠系統化且浮濫,夾雜了部分簡化字等,並無法完全代表香港的必要用字需求。

版本發佈時間收錄文字數備註
GCCS1995年3,049
HKSCS-19991999年9月4,702
HKSCS-20012001年12月4,818
HKSCS-20042005年5月4,941
+增收字元2006年11月4,969
+增收字元2008年2月5,000
HKSCS-20082009年12月5,009
HKSCS-20162017年5月5,033不再編配Big5碼位
  1. 一般認為Big5包含13,053字,但扣除兩個重複字僅13,051字。但Big5符號區內又收了9個單位字,在Unicode內屬於統合漢字,計入這些字共13,060字。或加上卄字,計算成13,601字。