簡介
Big5,又稱為 大五碼或 五大碼,是使用繁體中文(正體中文)社區中最常用的電腦漢字字元集標準,共收錄13,060個漢字。
中文碼分為內碼及交換碼兩類,Big5屬中文內碼,知名的中文交換碼有CCCII、CNS11643。
Big5雖普及於台灣、香港與澳門等繁體中文通行區,但長期以來並非當地的國家/地區標準或官方標準,而只是 業界標準。倚天中文系統、Windows繁體中文版等主要系統的字元集都是以Big5為基準,但廠商又各自增加不同的造字與造字區,派生成多種不同版本。
2003年,Big5收錄到CNS11643中文標準交換碼的附錄當中,獲取了較正式的地位。這個最新版本稱為 Big5-2003。
歷史及名稱
“大五碼”(Big5)是由台灣財團法人信息產業策進會為五大中文套裝軟體所設計的中文共通內碼,在1983年12月完成公告,隔年3月,信息產業策進會與台灣13家廠商簽定“16位個人電腦套裝軟體合作開發(BIG-5)項目(五大中文套裝軟體)”,因為此中文內碼是為台灣自行製作開發之“五大中文套裝軟體”所設計的,所以就稱為Big5中文內碼。五大中文套裝軟體雖然並沒有如預期的取代國外的套裝軟體,但隨著採用Big5碼的國喬中文系統及倚天中文系統先後在台灣市場獲得成功,使得Big5碼深遠地影響繁體中文電腦內碼,直至今日。“五大碼”的英文名稱“Big5”後來被人按英文字序譯回中文,以致現在有“五大碼”和“大五碼”兩個中文名稱。
Big5碼的產生,是因為當時個人電腦沒有共通的內碼,導致廠商推出的中文套用軟體無法推廣,並且與IBM 5550、王安碼等內碼,彼此不能兼容;另一方面,台灣當時尚未推出中文編碼標準。在這樣的時空背景下,為了使台灣早日進入資訊時代,所採行的一個項目;同時,這個項目對於以台灣為核心的亞洲繁體漢字圈也產生了久遠的影響。
Big5產生前,研發中文電腦的朱邦復認為內碼字集應該廣納所有的正異體字,以顧及如戶政等套用上的需要,故在當時的內碼會議中,建議希望採用他的五萬多字的字型檔。工程師認為雖其技術可行,但是三個位元組(超過兩個位元組)長度的內碼卻會造成英文顯示屏畫面映射成中文畫面會發生文字無法對齊的問題,因為當時盛行之倚天中文系統畫面系以兩個位元組文字寬度映射成一個中文字圖樣,英文軟體中只要以兩個英文字寬度去顯示一個中文字,畫面就不會亂掉,造成中文系統業者偏愛二個位元組長度的內碼;此外以倉頡輸入碼壓縮成的內碼不具排序等功能,因此未被採用。1983年有人誣指朱邦復為共產黨,其研究成果更不可能獲採用。
在Big5碼誕生後,大部分台灣的電腦軟體都使用了Big5碼,加上後來倚天中文系統的高度普及,使後來的微軟Windows 3.x等亦予以採用。雖然後來台灣還有各種想要取代Big5碼,像是倚天中文系統所推行的倚天碼、台北市電腦公會所推動的公會碼等,但是由於Big5字碼已沿用多年,因此在習慣不易改變的情況下,始終無法成為主流字碼。而台灣後來發展的國家標準CNS 11643中文標準交換碼由於非一般的內碼系統,是以交換使用為目的,受先天所限,必須使用至少三個位元組來表示一個漢字,所以普及率遠遠不及Big5碼。
在1990年代初期,當中國大陸的電子郵件和轉碼軟體還未普遍之時,在深圳的港商和台商公司亦曾經使用Big5系統,以方便與總部的檔案交流、以及避免為大陸的辦公室再寫一套不同內碼的系統。使用簡體中文的社區,最常用的是GB 2312、GBK及其後續的國標碼(GB 18030)。
除了台灣外,其他使用繁體漢字的地區,如香港(香港增補字元集)、澳門(澳門增補字元集),及使用繁體漢字的海外華人,都曾普遍使用Big5碼做為中文內碼及交換碼。
位元組結構
Big5碼是一套雙位元組字元集,使用了雙八碼存儲方法,以兩個位元組來安放一個字。第一個位元組稱為“高位位元組”,第二個位元組稱為“低位位元組”。
“高位位元組”使用了0x81-0xFE,“低位位元組”使用了0x40-0x7E,及0xA1-0xFE。在Big5的分區中:
0x8140-0xA0FE | 保留給用戶自定義字元(造字區) |
0xA140-0xA3BF | 標點符號、希臘字母及特殊符號, 包括在0xA259-0xA261,安放了九個計量用漢字:兙兛兞兝兡兣嗧瓩糎。 |
0xA3C0-0xA3FE | 保留。此區沒有開放作造字區用。 |
0xA440-0xC67E | 常用漢字,先按筆劃再按部首排序。 |
0xC6A1-0xC8FE | 保留給用戶自定義字元(造字區) |
0xC940-0xF9D5 | 次常用漢字,亦是先按筆劃再按部首排序。 |
0xF9D6-0xFEFE | 保留給用戶自定義字元(造字區) |
值得留意的是,Big5重複收錄了兩個相同的字:“兀、兀”(0xA461[U+5140]及0xC94A[U+FA0C])、“嗀、嗀”(0xDCD1[U+55C0]及0xDDFC[U+FA0D])。此外“十”、“卅”也在符號區又重複了一次,在檢索系統中常會造成查詢不到字。
沖碼問題
因為低比特字元中包含了程式語言、shell、script中,字元串或命令常會用到的特殊字元,例如0x5C“\”、0x7C“|”等。“\”在許多用途的字元串中是當作轉義符號又稱為轉義字元,例如\n(換行)、\r(歸位)、\t(tab)、\\(\本身符號)、\"(引號)等等。而“|”在UNIX作業系統中大多當作命令管線的使用,如"ls -la | more"等等。如果在字元串中有這些特殊的轉義字元,會被程式或解釋器解釋為特殊用途。但是因為是中文的原因,故無法正確解釋為上面所述的行為,因此程式可能會忽略此轉義符號或是中斷運行。若此,就違反了用戶本來要當成中文字元一部分使用的本意。
低比特字元與ASCII重疊的字元如下︰
在常用字如“功”(0xA55C)、“許”(0xB35C)、“蓋”(0xBB5C)、“育”(0xA87C)中時常出現,造成了許多軟體無法正確處理以Big5編碼的字元串或檔案。這個問題被戲謔性地人名化,稱為“ 許功蓋”或“ 許蓋功”(這三個字都有這種問題)。
一般的解決方法,是額外增加“\”的字元,因為“\\”會被解釋為“\”,所以“成功\因素”這個字元串就能無誤地被程式當作“成功因素”的字元串來處理。但是額外的困擾是,有些輸出功能並不會把“\”當作特殊字元看待,所以有些程式或網頁就會錯誤地常常出現在“許功蓋”這些字後面多了“\”。
與畫線字元相衝
Big5碼字元的首位元組會與DOS代碼頁437的畫線字元相衝而產生亂碼。
私人造字區
在倚天中文系統,以及後來的Windows 3.1、95及98中,定義四個私人造字區範圍:0xFA40-0xFEFE、0x8E40-0xA0FE、0x8140-0x8DFE、0xC6A1-0xC8FE。
私人造字區的原意,是供用戶加入本來在編碼表中缺少的字元,但當每個用戶都在不同的地方加上不同的字元後,當交換數據時,對方便難以知道某一個編碼究竟想表達什麼字。
發展
由於各廠商及政府推出的Big5延伸,彼此互不兼容,造成亂碼問題。鑒於Unicode能正確地處理七萬多個漢字,近年的作業系統和應用程式(如蘋果電腦Mac OS X和以CocoaAPI撰寫之程式、MicrosoftWindows 2000及之後版本、Microsoft Office2000及之後版本、Mozilla瀏覽器、Internet Explorer瀏覽器、Java語言等等),已改用Unicode編碼。可惜現時仍有一些舊的軟體(如Visual Basic6、部分Telnet或BBS軟體),未能支持Unicode編碼,故相信Big5缺字的問題仍會困擾用戶一段時間,直至所有程式都能改用Unicode為止。
輸入方法
•VimIM在Vim環境中,可以直接鍵入十進制或十六進制碼。既不需要引導輸入法,也不需要碼錶。
參看
•CCCII
•GB 18030《信息交換用漢字編碼字元集基本集的擴充》
•Unicode
•中日韓統一表意文字
•中文亂碼
•香港增補字元集(HKSCS)
•國家標準中文交換碼(CNS11643)
輸入法大全
輸入法大全及其理論,發明者等。 |