简介
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码,加上后来倚天中文系统的高度普及,使后来的微软Windows3.x等亦予以采用。虽然后来台湾还有各种想要取代Big5码,像是倚天中文系统所推行的倚天码、台北市电脑公会所推动的公会码等,但是由于Big5字码已沿用多年,因此在习惯不易改变的情况下,始终无法成为主流字码。而台湾后来发展的国家标准CNS11643中文标准交换码由于非一般的内码系统,是以交换使用为目的,受先天所限,必须使用至少三个字节来表示一个汉字,所以普及率远远不及Big5码。
在1990年代初期,当中国大陆的电子邮件和转码软件还未普遍之时,在深圳的港商和台商公司亦曾经使用Big5系统,以方便与总部的文件交流、以及避免为大陆的办公室再写一套不同内码的系统。使用简体中文的社区,最常用的是GB2312、GBK及其后续的国标码(GB 18030)。
除了中国台湾外,其他使用繁体汉字的地区,如香港(香港增补字符集)、澳门(澳门增补字符集),及使用繁体汉字的海外华人,都曾普遍使用Big5码做为中文内码及交换码。
Internet上常用的汉字编码有国际码、HZ码和大五码三种,这三种汉字编码可利用Internet上的一些转换软件来相互转换。
字节结构
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重叠的字符如下︰
@ A-Z [ ] ^ _ ` a-z { | } ~
在常用字如“功”(0xA55C)、“许”(0xB35C)、“盖”(0xBB5C)、“育”(0xA87C)中时常出现,造成了许多软件无法正确处理以Big5编码的字符串或文件。这个问题被戏谑性地人名化,称为“许功盖”或“许盖功”(这三个字都有这种问题)。
一般的解决方法,是额外增加“”的字符,因为“”会被解释为“”,所以“成功因素”这个字符串就能无误地被程序当作“成功因素”的字符串来处理。但是额外的困扰是,有些输出功能并不会把“”当作特殊字符看待,所以有些程序或网页就会错误地常常出现在“许功盖”这些字后面多了“”。
与画线字符相冲
Big5码字符的首字节会与DOS代码页437的画线字符相冲而产生乱码。
私人造字区
在倚天中文系统,以及后来的Windows3.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)