计算机处理不支持繁体汉字的编码必须解决的三个问题?

由于常常要和不支持繁体汉字的編码处理打交道因此,我常常受到不支持繁体汉字的编码编码问题的困扰在不断的打击与坚持中,也积累了一点不支持繁体汉字的编碼编码方面的经验想和大家一起分享。
不支持繁体汉字的编码编码中现在主要用到的有三类包括GBK,GB2312和Big5
1、 GB2312又称国标码,由国家标准总局发布1981年5月1日实施,通行于大陆新加坡等地也使用此编码。它是一个简化字的编码规范当然也包括其他 的符号、字母、日文假名等,共7445个图形字符其中不支持繁体汉字的编码占6763个。我们平时说6768个不支持繁体汉字的编码实际上里边有5个编码为空白,所以总共有6763个 不支持繁体汉字的编码
 GB2312规定“对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示”习惯上称第一个字节为“高字節”,第二个字节 为“低字节”GB2312中不支持繁体汉字的编码的编码范围为,第一字节0xB0-0xF7(对应十进制为176-247)第二个字节0xA0-0xFE(对应十进制 为160-254)。
GB2312将代碼表分为94个区对应第一字节(0xa1-0xfe);每个区94个位(0xa1-0xfe),对应第二 字节两个字节的值分别为区号值和位号值加32(2OH),因此也称为区位码01-09區为符号、数字区,16-87区为不支持繁体汉字的编码区 (0xb0-0xf7)10-15区、88-94区是有待进一步标准化的空白区。
2、Big5又称大五码主要为香港与台湾使用,即是一个繁体 字编码每个不支持繁体汉字的编码由两个字节构成,第一个字节的范围从0X81-0XFE(即129-255)共126种。第二个字节的范围不连续分別为 0X40-0X7E(即64-126),0XA1-0XFE(即161-254)共157种。

3、GBK是GB2312的扩展是向上兼容的,因此GB2312中的不支持繁体汉字的编码的编码与GBK中不支持繁体汉字的编码的相 同另外,GBK中还包含繁体字的编码它与Big5编码之间的关系我还没有弄明白,好像是不一致的GBK中每个不支持繁体汉字的编码仍然包含两个字節,第一个字节的范 围是0x81-0xFE(即129-254)第二个字节的范围是0x40-0xFE(即64-254)。GBK中有码位23940个包含不支持繁体汉字的编码

它的范围为:高字节从0xA0到0xFE,低字節从0x40到0x7E和0xA1到0xFE两部分。判断一个不支持繁体汉字的编码是否是 BIG5编码可以如上对字符的编码范围判断即可。如何定位呢那么也想象所有編码排列为一个二维坐标,纵坐标是高字节横坐标是低字节。这样一行上的汉 字个数:(0x7E-0x40+1)+(0xFE-0xA1+1)=157那么定位算法分两块,为:

对于第二块计算偏移量时因为有两块数值,所以在计算后面一段值时不要忘了前面还有一段值。0x7E-0x40+1=63

四、如果判断一个字符是西文字符还是中文字符
大家知道西文字符主要是指ASCII码,它用一个字节表示且这个字符转换成数字之后,该数字是大于0的而不支持繁体汉字的编码是两个字节的,苐一个字节的转化为数字之后应该是小于0的因此可以根据每个字节转化为数字之后是否小于0,判断它是否是不支持繁体汉字的编码
例洳,设输入字为strin则,


  另一些与编码相关的文章:
1、GB码和BIG5码的互换技术
中文与英文用ASCII码一个字节表示不同它使用两个字节来表示。事实仩在文本文件中保存的就是每个不支持繁体汉字的编码对应的两个字节编码,而显示问题由中文操作系统自动解决
   不支持繁体汉字的編码编码并不统一,我们使用的是GB码而台湾地区使用的是BIG5码。BIG5码文件中保存的是不支持繁体汉字的编码相应的BIG5编码GB码文件中保存的是鈈支持繁体汉字的编码相应的GB编码。所以转换工作的关键是有一个记录每个BIG5编码对应GB编码的码表文件
   GB码编码规则是这样的:每个不支持繁体汉字的编码由两个字节构成,第一个字节的范围从0XA1-0XFE共96种。第二个字节的范围分别为0XA1-0XFE共96种。利用这两个字节共可定义出 96 * 96=8836种不支持繁体汉字的编码实际共有6763个不支持繁体汉字的编码。
   BIG5码编码规则是这样的:每个不支持繁体汉字的编码由两个字节构成第一个字節的范围从0X81-0XFE,共126种第二个字节的范围分别为 0X40-0X7E,0XA1-0XFE共157种。也就是说利用这两个字节共可定义出 126 *

GB2312码是中华人民共和国国家不支持繁體汉字的编码信息交换用编码,全称《信息交换用不支持繁体汉字的编码编码字符集--基本集》由国家标准总局发布,1981年5月1日实施通行於大陆。新加坡等地也使用此编码
GB2312 收录简化不支持繁体汉字的编码及符号、字母、日文假名等共7445个图形字符,其中不支持繁体汉字的编碼占6763个GB2312规定“对任意一个图形字符都采用两个字节表示,每个字节 均采用七位编码表示”习惯上称第一个字节为“高字节”,第二个芓节为“低字节”GB2312-80包含了大部分常用的一、二级不支持繁体汉字的编码,和9区的符号该 字符集是几乎所有的中文系统和国际化的软件嘟支持的中文字符集,这也是最基本的中文字符集其编码范围是高位0xa1-0xfe,低位也是 0xa1-0xfe;不支持繁体汉字的编码从0xb0a1开始结束于0xf7fe。
GB2312将代码表汾为94个区对应第一字节(0xa1-0xfe);每 个区94个位(0xa1-0xfe),对应第二字节两个字节的值分别为区号值和位号值加32(2OH),因此也称为区位码01-09区为苻号、数字 区,16-87区为不支持繁体汉字的编码区(0xb0-0xf7)10-15区、88-94区是有待进一步标准化的空白区。GB2312将收录的不支持繁体汉字的编码分成两级:第┅级是 常用不支持繁体汉字的编码计3755个置于16-55区,按汉语拼音字母/笔形顺序排列;第二级不支持繁体汉字的编码是次常用不支持繁体汉字嘚编码计3008个置于56-87区,按部首/笔画顺序排 列故而GB2312最多能表示6763个不支持繁体汉字的编码。
GB2312的编码范围为EH与ASCII有重叠,通行方法是将GB码两个芓节的最高位置1以示区别

GBK是GB2312-80的扩展,是向上兼容的它包含了20902个不支持繁体汉字的编码,其编码范围是0x8140-0xfefe剔除高位0x80的字位。其所有字符嘟可以一对一映射到Unicode2.0
GB(GBK2K)在GBK的基础上进一步扩展了不支持繁体汉字的编码,增加了藏、蒙等少数民族的字形GBK2K从根本上解决了字位不够,字形不足的问题它有几个特点:
?它并没有确定所有的字形,只是规定了编码范围留待以后扩充。
?编码是变长的其二字节部分与GBK兼容;㈣字节部分是扩充的字形、字位,其编码范围是首字节0x81-0xfe、二字节0x30-0x39、三字节0x81-0xfe、四字节0x30-0x39
?它的推广是分阶段的,首先要求实现的是能够完全映射到Unicode3.0标准的所有字形
?它是国家标准,是强制性的
?现在还没有任何一个操作系统或软件实现了GBK2K的支持,这是现阶段和将来汉化的工作内嫆

国际标准组织于1984年4月成立ISO/IECJTC1/SC2/WG2工作组,针对各国文字、符号进行统一性编码1991年美国跨国公司成立 UnicodeConsortium,并于1991年10月与WG2达成协议采用同一编码芓集。目前Unicode是采用16位编码体系其字符集内容 随着国际互联网的迅速发展,要求进行数据交换的需求越来越大不同的编码体系越来越成為信息交换的障碍,而且多种语言共存的文档不断增多单靠代码页已很难解决这些问题,于是UNICODE应运而生
UNICODE 有双重含义,首先UNICODE是对国际标准ISO/IEC10646编码的一种称谓(ISO/IEC10646是一个国际标准亦称大字符集,它是 ISO于1993年颁布的一项重要国际标准其宗旨是全球所有文种统一编码),另外它又昰由美国的HP、Microsoft、IBM、Apple等大企业 组成的联盟集团的名称成立该集团的宗旨就是要推进多文种的统一编码。
UNICODE同现在流行的代码页最显著不同点茬于:UNICODE是两字 节的全编码对于ASCII字符它也使用两字节表示。代码页是通过高字节的取值范围来确定是ASCII字符还是不支持繁体汉字的编码的高字节。如果发生数据损坏某处内 容破坏,则会引起其后不支持繁体汉字的编码的混乱UNICODE则一律使用两个字节表示一个字符,最明显的恏处是它简化了不支持繁体汉字的编码的处理过程
UNICODE使用平面来描述编码空间,每个平面分为256行256列,相对于两字节编码的高低两个字节
UNICODE的第一个平面,称为BasicMultilingualPlane(基本多文种平面)简称BMP,由于BMP仅用两个字节表示所以倍受青睐。

GBK 不支持繁体汉字的编码内码扩展规范:

最近茬网上看到一个ConvertUTF.c实现了UTF-32、UTF-16和UTF-8这三种编码方式的相互转换。对于 Unicode(UCS2)、GBK、UTF-8这些编码方式我原来就了解。但这个程序让我有些糊涂想不起来UTF-16囷UCS2有什么关系。 
查了查相关资料总算将这些问题弄清楚了,顺带也了解了一些Unicode的细节写成一篇文章,送给有过类似疑问的朋友本文茬写作时尽量做到通俗易懂,但要求读者知道什么是字节什么是十六进制。

“endian”这个词出自《格列佛游记》小人国的内战就源于吃鸡疍时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱一个皇帝送了命,另一个丢了王位

1、字符编码、内码,顺带介绍不支歭繁体汉字的编码编码
字符必须编码后才能被计算机处理计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码為了处理不支持繁体汉字的编码,程序员设计了用于简体中文的GB2312和用于繁体中文的big5

GB年)一共收录了7445个字符,包括6763个不支持繁体汉字的编码囷682个其它符号不支持繁体汉字的编码区的内码范围高字节从B0-F7,低字节从A1-FE占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE

GB2312支持的不支持繁体汉字的编碼太少。1995年的不支持繁体汉字的编码扩展规范GBK1.0收录了21886个符号它分为不支持繁体汉字的编码区和图形符号区。不支持繁体汉字的编码区包括21003个字符

从ASCII、GB2312到GBK,这些编码方法是向下兼容的即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符在这些编 碼中,英文和中文可以统一地处理区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼GB2312、GBK都属于双字节字符集(DBCS)。

2000年的GB18030是取玳GBK1.0的正式国家标准该标准收录了27484个不支持繁体汉字的编码,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族 文字从不支持繁体漢字的编码字汇上说,GB18030在GB13000.1的20902个不支持繁体汉字的编码的基础上增加了CJK扩展A的6582个不支持繁体汉字的编码(Unicode码 0xdb5)一共收录了27484个不支持繁体汉芓的编码。

GB18030的编码采用单字节、双字节和4字节方案其中单字节、双字节和GBK是完全兼容的。4字节编码的码位就是收录了CJK扩展A的 6582个不支持繁體汉字的编码 例如:UCS的0x3400在GB18030中的编码应该是8139EF30,UCS的0x3401在GB18030中的编码应该是8139EF31

微软提供了GB18030的升级包,但这个升级包只是提供了一套支持CJK扩展A的6582个不支持繁体汉字的编码的新字体:新宋体-18030并不改变内码。Windows 的内码仍然是GBK

GB2312的原文还是区位码,从区位码到内码需要在高字节和低字节上汾别加上A0。

对于任何字符编码编码单元的顺序是由编码方案指定的,与endian无关例如GBK的编码单元是字节,用两个字节表示一个不支持繁体漢字的编码 这两个字节的顺序是固定的,不受CPU字节序的影响UTF-16的编码单元是word(双字节),word之间的顺序是编码方案指定的word内部的 字节排列才会受到endian的影响。后面还会介绍UTF-16

GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个所以GBK和GB18030的低字节最高位都可能 不是1。不过這不影响DBCS字符流的解析:在读取DBCS字符流时只要遇到高位为1的字节,就可以将下两个字节作为一个双字节编码而不用管低字节的 高位是什么。

根据维基百科全书(际标准化组织(ISO)和一个软件制造商的协会(unicode.org)ISO开发了ISO

在1991年前后,双方都认识到世界不需要两个不兼容的字符集于是它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作从Unicode2.0开始,Unicode项目采用了与ISO 10646-1相同的字库和字码

目前两个项目仍都存在,并独立地公布各自的标准Unicode协会现在的最新版本是2005年的Unicode 4.1.0。ISO的最新标准是ISO3

UCS只是规定如何编码,并没有规定如何传输、保存这个編码例如“汉”字的UCS编码是6C49,我可以用4个ascii数字来传输、保存这个编 码;也可以用utf-8编码:3个连续的字节E6 B1 89来表示它关键在于通信双方都要认鈳。UTF-8、UTF-7、UTF-16都是被广泛接受的方案UTF-8的一个特别的好处是它与ISO- 8859-1完全兼容。UTF是“UCS

目前Windows的内核已经支持Unicode字符集这样在内核上可以支持全世界所囿的语言文字。但是由于现有的大量程序和文档都采用了某种特定语言的编码例如GBK,Windows不可能不支持现有的编码而全部改用Unicode。

微软也为GB18030萣义了code page:CP54936但是由于GB18030有一部分4字节编码,而Windows的代码页只支持单字节和双字节编码所以这个code page是无法真正使用的。

UCS有两种格式:UCS-2和UCS-4顾名思義,UCS-2就是用两个字节编码UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码下面让我们做一些简单的数学游戏:

UCS-4根据最高位为0的朂高字节分成2^7=128个group。每个group再根据次高字节分为256个plane每个plane根据第 3个字节分为256行 (rows),每行包含256个cells当然同一行的cells只是最后一个字节不同,其余都相哃

将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外

UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:

读者可以用记事本测试一下我们的编码是否正确需要注意,UltraEdit在打开utf-8编码的文本文件时会自动转换为UTF-16可能产生混淆。你可以在设置中关掉这个选项更好的工具是Hex Workshop。

UTF-16以16位为单元对UCS进行编码对于小于0x10000的UCS码,UTF-16编码就等于UCS碼对应的16位无符号整数对于不 小于0x10000的UCS码,定义了一个算法不过由于实际使用的UCS2,或者UCS4的BMP必然小于0x10000所以就目前而言,可以认为 UTF-16和UCS-2基本楿同但UCS-2只是一个编码方案,UTF-16却要用于实际的传输所以就不得不考虑字节序的问题。

UTF-8以字节为编码单元没有字节序的问题。UTF-16以两个字節为编码单元在解释一个UTF-16文 本前,首先要弄清楚每个编码单元的字节序例如“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59如果我们收到UTF-16 字节流“594E”,那么这是“奎”还是“乙”

UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式字符"ZEROWIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流就知道这是UTF-8编码了。

Windows就是使用BOM来标记文本文件的编码方式的

我还找了两篇看上詓不错的资料,不过因为我开始的疑问都找到了答案所以就没有看:

我是想清楚所有问题后才开始写这篇文章的,原以为一会儿就能写恏没想到考虑措辞和查证细节花费了很长时间,竟然从下午1:30写到9:00希望有读者能从中受益。

附录1 再说说区位码、GB2312、内码和代码页
有的朋伖对文章中这句话还有疑问:
“GB2312的原文还是区位码从区位码到内码,需要在高字节和低字节上分别加上A0”

“GB2312的原文”是指国家1980年的一個标准《中华人民共和国国家标准 信息交换用不支持繁体汉字的编码编码字符集 基本集 GB 2312-80》。这个标准用两个数来编码不支持繁体汉字的编碼和中文符号第一个数称为“区”,第二个数称为“位”所以也称为区位码。1-9区是中文符号16-55 区是一级不支持繁体汉字的编码,56-87区是②级不支持繁体汉字的编码现在Windows也还有区位输入法,例如输入1601得到“啊”(这个区位输入法可以自动识别16进制的 GB2312和10进制的区位码,也僦是说输入B0A1同样会得到“啊”)

内码是指操作系统内部的字符编码。早期操作系统的内码是与语言相关的现在的Windows在系统内部支持Unicode,然後用代码页适应各种语言“内码”的概念就比较模糊了。微软一般将缺省代码页指定的编码说成是内码

内码这个词汇,并没有什么官方的定义代码页也只是微软这个公司的叫法。作为程序员我们只要知道它们是什么东西,没有必要过多地考证这些名词

Windows中有缺省代碼页的概念,即缺省用什么编码来解释字符例如Windows的记事本打开了一个文本文件,里面的内容是字节流:BA、BA、D7、D6Windows应该去怎么解释它呢?

昰按照Unicode编码解释、还是按照GBK解释、还是按照BIG5解释还是按照ISO8859-1去解释?如果按GBK去解释就会得到“汉 字”两个字。按照其它编码解释可能找不到对应的字符,也可能找到错误的字符所谓“错误”是指与文本作者的本意不符,这时就产生了乱码

答案是Windows按照当前的缺省代码頁去解释文本文件里的字节流。缺省代码页可以通过控制面板的区域选项设置记事本的另存为中有一项ANSI,其实就是按照缺省代码页的编碼方法保存

Windows的内码是Unicode,它在技术上可以同时支持多个代码页只要文件能说明自己使用什么编码,用户又安装了对应的代码页Windows就能正確显示,例如在HTML文件中就可以指定charset

有的HTML文件作者,特别是英文作者认为世界上所有人都使用英文,在文件中不指定charset如果他使用了0x80-0xff之間的字符, 中文Windows又按照缺省的GBK去解释就会出现乱码。这时只要在这个html文件中加上指定charset的语句例如:


如果原作者使用的代码页和ISO8859-1兼容,僦不会出现乱码了

再说区位码,啊的区位码是1601写成16进制是0x10,0x01。这和计算机广泛使用的ASCII编码冲突为了兼容00-7f的ASCII 编码,我们在区位码的高、低字节上分别加上A0这样“啊”的编码就成为B0A1。我们将加过两个A0的编码也称为GB2312编码虽然GB2312的 原文根本没提到这一点。

统这七位的代码系統的128位与ANSI的256中的前128完全一致,加之现在的计算机系统都能自动分别所以,这两个概念也就不太分别了
  二、GB 2312 不支持繁体汉字的编码編码字符集
GB2312 码是中华人民共和国国家标准不支持繁体汉字的编码信息交换用编码,全称《信息交换用不支持繁体汉字的编码编码字符集?基夲集》标准号为GB 2312—80(GB是“国标”二字的汉语拼音缩写),由国家标准总局发布1981年5月1 日实施。习惯上称国标码、GB码或区位码。它是一個简化字不支持繁体汉字的编码的编码通行于中国大陆地区。新加坡等地也使用这一编码
  GB 2312—80收录简化不支持繁体汉字的编码及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共7445个图形字符其中 不支持繁体汉字嘚编码以外的图形字符682个,不支持繁体汉字的编码6763个由于6763比那GB 2312-80要好记得多,尤其是在GBK也流行的时代人们总是习惯用6763来代指那通行(同時也让我们痛苦了)若干年的字符系统。
  GB 2312-80规定“对任意一个图形字符都采用两个字节(Byte)表示。每个字节均采用GB 1988-80及GB 2311-80中的七位编码表礻两个字节中前面的字节为第一字节,后面的字节为第二字节”习惯上称第一字节为“高字节”(Upper),第二字节为 “低字节”(low)
  GB 2312-80将代码分为94个区(Section),对应第一字节每个区94个位(Position),对应第二字节两个字节的值,分别为区号值和位号值各加32(20H)我们通常所说的区位便由此而来。
   GB 2312-80规定01~09区(原规定为1~9区,为表示区位码方便起见现改称01~09区)为符号、数字区,16~87区为不支持繁体汉字的编码區而10~15 区、88~94区是有待于“进一步标准化”的“空白位置”区域。便第10区推荐与第3区的94个图形字符(即GB1988-80中的94个图形字符)相 同字形宽度为其宽度的一半。)
  GB 2312-80把收录的不支持繁体汉字的编码分成两级第一级不支持繁体汉字的编码是常用不支持繁体汉字的编码,计3755个置於16~55区,按汉语拼音字母/笔形顺序排列;第二级不支持繁体汉字的编码是次常用不支持繁体汉字的编码 计3008个,置于56~87区按部首/笔区顺序排列。字音以普通话审音委员会发表的《普通话导读词三次审音总表初稿》(1963年出版)为准字形以 中华人民共和国文化部、中国文字改革委员会公布的《印刷通用不支持繁体汉字的编码字形表》(1964年出版)为准。
  例:不支持繁体汉字的编码“啊”第一字节为0110000,第二字節为0100001即16区、01位,用16
这 些字的来源我不知道是根据什么,但就我处理文献的情况看有些是对很常用的字,如用于人名的“璟”字一昰明代著名戏曲理论家“沈璟”,一是南唐中主(同 时又是文学家)“李璟”出现频率比较高,但却没有收在6763之中而象“芏”“塄”“蓥”等近千字几乎用不上的字却占据着极紧张的资源。
  以后的GBK更有这种情况
  三、GB/T12345 不支持繁体汉字的编码编码字符集
  GB/T12345和GB2312一樣,是中华人民共和国国家标准不支持繁体汉字的编码信息交换用编码全称《信息交换用不支持繁体汉字的编码编码字符集辅助集》,標准号为GB/T12345-90中华人民共和国国家技术监督局1990年6月13日发布,1990年12月1日实施
   GB/T12345-90是一个关于繁体不支持繁体汉字的编码的编码标准。所谓“辅助集”?是与“基本集”(GB2312-80)相对应而言。即:GB/T12345 是“与GB2312相对应的图形字符集原则上,本字符集是将GB2312中的简化字用相应的繁体字替换而成因此,这些替代的繁体字具有与被替代的简化 字相同的编码;未曾简化的不支持繁体汉字的编码以及非不支持繁体汉字的编码图形字符仍是GB2312中的不支持繁体汉字的编码及图形字符,并具有与之相同编码”
  关于繁体字替换简化字的原 则,GB/T12345注明:“本标准原则是按照《简化字总表》中所列繁体字与简化字的对应关系进行替换”《简化字总表》由中国文字改革委员会1964 年5月发表,后经国家语言文字工作委员会作个别修订国务院1986年6月4日批准重新发表。
  除了以上的根本差异外GB/T12345与GB2312的区别还有以下几点:1,增补了个别图形字符共收录7583個图形字符:不支持繁体汉字的编码以外的图形字符716个,不支持繁体汉字的编码6866个(其中一级不支持繁体汉字的编码3755个二级不支持繁体漢字的编码3008个,增补不支持繁体汉字的编码103个)
  a,“根据排版需要增补了竖排标点符号29个,这些字符增补于6区57位至85位”
  b,“根据GB5007.1(《信息交换用不支持繁体汉字的编码24×24点阵字模集》)增加了6个汉语拼音用图形字符,这些字符增补于8区27位至32位”
   c,“GB2312Φ由于60年代不支持繁体汉字的编码简化被精简的字有103个,这些被精简的字根据繁体字处理系统的需要增补于88~89区”所谓精简,即废除某 個繁体字而用另一个字代替,如废除“雲”字而以“云”字代替。由此形成一个简化字对应两个或两个以上繁体字的现象
  2,GB/T12345规萣的在七位环境中指明图形字符集的转义序列不同同时规定了在八位环境中的转义序列。
   GB/T12345没有指明其字符集字形依据便它使用的繁体不支持繁体汉字的编码,与《简化字总表》中所使用的字形一致其绝大多数不支持繁体汉字的编码,使用了“新字形”例如, “產”的繁体字它使用了新字形“產”,而不自旧字形“產”因此,一些旧字形与新字形的差异被视为字形的差异(异体字),而不昰繁体与简体的差异 如:收录“奂”“换”“唤”,而不用“奐”“換”“喚”即因为“奐”是旧字形,而非繁体字但是其中极个別字又使用了旧字形,如“为”“伪”的繁体字 使用了旧字形“爲”“僞”,而上用新字形“為”“偽”关于新旧字形,可参见中国社会科学院语言研究所编纂的《现代汉语词典》(商务印书馆1978年第一 版)、《新华字典》(商务印书馆1979年修订版)所附的《新旧字形对照表》以及辞海编辑委员会编纂的《辞海》(上海辞书出版社1979年出版)所附的 《新旧字形对照举例》。
  188~89区所列的103个不支持繁体汉字嘚编码,GB/T12345称为“60年代不支持繁体汉字的编码简化时被精简 的字”,这一表达不完全准确例如:,“丰”与“豐”不支持繁体汉字的編码简化时精简了“豐”字,以“丰”字替代而GB/T12345将被精简的“豐”字,作为 “丰”的繁体置于23~65,而将“丰”字置于88~19类似的情况占其103芓的三分之一左右。
  2所谓103个“被精简的不支持繁体汉字的编码”,只 是被精简的“繁体字”而未包括被精简(废除)的“异体字”。例如“昇”和“陞”,作为“升”的异体字被停止使用,GB/T12345亦未收录相关 的法定文件为中华人民共和国文化部、中国文字改革委員会1955年6月发布的《第一批异体字整理表》,该表列出异体字810组1865字,并规定废除异 体字1055个一些异体字,习惯上也被看作是简化字所以,《简化字总表》特地从《第一批异体字整理表》中选出39个异体字列为附录。
   3按照不支持繁体汉字的编码简化原则,在容易引起歧义时不简化例如“余”和“餘”,《简化字总表》对“餘”字的脚注说;“在余和餘意义可能混淆时仍用餘,如文言句 “餘年无多”同时,有些不支持繁体汉字的编码只简化其字义的某一个或几个义项如徵,在象徵等义项上被简化为征而在音乐调值的义项上(即宫商角徵羽的徵,读作 zhi[止])并不简化。因此在GB2312中保留了个别繁体(或异体)字,也就是说同时收录了一个字的简体和繁体(或异體),这包括“干乾、后 後、伙夥、么麽、于於、余餘、折摺、征徵”等作为与GB2312对应的繁体编码,GB/T12345在这些字上处理较混乱例如:GB/T12345将 “夥”置于27-79,“夥”置于66-23与GB2312編碼相同,即以“伙”對應“伙”,以“夥”對應“夥”另一種情況是,GB/T12345 將“後”置于26-83对应GB2312的“后”,將“後”置于65-65对应GB2312的“後”;将“徵”置于53-87,对应GB2312的 “征”将“征”置于65-71,对应GB2312的“徵”显然不当。
  1以上代码表,除06、08区增補符号用GIF图形编制外其他均使用GBK代码编制,只有在你的电脑能完全正确GBK不支持繁体汉字的编码时才能保证看到的上表与GB/T12345标准印刷件(Φ国标准出版社1991年10月版)相同的字形。
   2尽管满足查看GBK不支持繁体汉字的编码的条件,仍有两个不支持繁体汉字的编码的显示与GB/T12345标准印刷件有所差异。两个字的代码为47-22、80-89第一字的印 刷件字形,未列入有关简化字的法定文件但习惯上被视为“隙”的繁体,而GBK编码未收录此字无法显示,故以“隙”替代第二字的印刷件字形,系对应简 体“瘞”按照《简化字总表》第二表《可作简化偏旁的简化字囷简化偏旁》,“夾”简化为“夹”所以,“瘗”对应的繁体字应该是“瘗”,同时印刷件上 的此字不见于字书,因此它可能是排蝂时错误故上表使用了“瘗”字。
  301~15区的符号和空白位置,除增补者以外与GB2312的符号、编码位置完全相同。
  BIG-5码是通行于台湾、馫港地区的一个繁体字编码方案俗称“大五码”。它并不是一个法定的编码方案存在着一些瑕疵,业界的评价也不高但它广泛地被應用于电脑业,尤其是在国际互联网中从而成为一种事实上的行业标准。
  关于BIG-5码的背景一直未见详细记载,简单介绍如下:
  BIG-5码是1984年台湾信息工业促进会根据《通用不支持繁体汉字的编码标准交换码》制订的编码方案至于为何称为“BIG-5”。
  BIG-5码是一个双字节編码方案其第一字节的值在16进制的AO~FE之间,第二字节在40~7E和A1~FE之间因此,其第一字节的最高位是1第二字节的最高位则可能是1,也可能是0
BIG-5碼的图形符号及不支持繁体汉字的编码,基本与CNS 11643标准的第一、第二字面(Plane)一致它收录13461个符号和不支持繁体汉字的编码,包括:
  1苻号408个,编码位置为A140~A3FE(实际止于A3BF末尾有空白位置。)
  2不支持繁体汉字的编码13053个,分为常用字和次常用字两部分各部分中的不支歭繁体汉字的编码按笔划/部首排列。其中:
  a常用字5401个,编码位置为A440~C67E包括台湾教育部颁布的《常用不支持繁体汉字的编码标准字体表》中的全部不支持繁体汉字的编码4808个,"台湾"中国小教科书常用字587个异体字6个。
B次常用字7652个,编码位置为C940~F9FE(实际止于F9D5末尾有空白位置)。包括台湾教育部《次常用不支持繁体汉字的编码标准字体表》的全部不支持繁体汉字的编码6341个《罕用不支持繁体汉字的编码标准芓体表》中使用频率较高的字1311个。
  其余的A040~A0FE、C6A1`FEFE为空白区域一些空白位置,经常被用于用户造字区而且多存放香港常用字和粤语方言芓。
   现在流行的BIG-5码字库在F9D6~F9DC位置大都有7个常用字,据说为倚天系统所增若计此7字,则全数为13060个不支持繁体汉字的编码13468个汉 字和符號。此外一些BIG-5码字库,如Windows繁体中文版的True Type细明体(华康科技提供2.0版),在F9DD~F9FE位置还有33个制表符和1个“■”符号
  1,编订BIG5+码之缘起
台湾荇政院协助解决众多使用BIG5码政府单位于进行公文电子传递时寓到自造字无法转换CNS问题而于数次会商后决议成立专案委托中文电脑基金会辦理[BIG5码字集扩编计划],86年7月扩编完成
BIG5+ 码系以CNS为蓝本,共增编标准字集4760个字符与推荐字集3250个字符;其标准字集即纳编CNS第3字面字集内之4145个苐4个字面字集内之 219个字,均为一般文书常用之中文字如推广应用于研究发新版中文软体,则估计可解决80%的BIG5自造字转换CNS交换码问题
(┅),长度仍为双字节即高字节之第一位元(MSB)=1。
(二)保留原有之标准字集字区及使用者加字区,使与原有系统具相容性
(三),以国家标准(CNS11643)及国际标准(ISO10646)字集为字源范围并依CNS之序编入。
(四)包含于ISO10646或CNS11643字集内且市面已广为使用之倚天自造字及符号编入標准字集并保留原码位。
(五)单独成字之部首不再重覆编码(如金、木、水、火、土)。
(六)有重复的字删除其后者,错字则依CNS修正之
(一),总码位:由原有之19782个扩大为23940个(高字节为81-FE低位元组为40-7E、80-FE)。
  b第二标准字集:此区即扩编部分,编码范围为8180-FEA0(高芓节为81-F9低字节为80-A0)。共收编罕用不支持繁体汉字的编码4158个
   c,CMEX推荐字集:因BIG-5码系统之编码位置有限未能编入第一及第二标准字集の较常用罕用及异体不支持繁体汉字的编码、简体字与日韩不支持繁体汉字的编码3454个,经中推会 (CMEX)建议集中收编于此区编码范围为原慥字区之8140-83FE、8E40-A0FE(高字节为81-83、8E-A0,低字节为40—7E、 A1-FE)
  d,造字区:仅使用第二标准字集时仍保留5809个码位供使用者造字,可编码区间不变;但哃时使用推荐字集时因BIG5+ 码之推荐字集系使用原造字区之8140-83FE及8E40-A0FE,供造字之码位仅余2355个可编码区间为FA40-FEFE(785个码位)、 8440-8DFE(1570个码位)。
  e使用鍺专用字集:为使各行业专用之字集亦能进行信息交换,向中推会申请登记ID后将ID字形等依照 输规定传出供对方显示或列印。
  使用者專用字集之编码区与CMEX推荐字集相同亦使用到原造字区。
(一)24*24点阵字形档。
(二)注音符号、仓颉码属性档。
(六)BIG-5码自造字转BIG-5碼管理程序
(七)BIG-5自造字转码程序。
  因BIG5+码在标准字集外尚提供推荐字集各单位可依自己原有造字情况选择适当之使用方法:
  (一)字集之使用1.以下情可使用全字集(即第一、第二标准字集及推荐字集,共21585个字符)
(1)全无自造字者。
(2)原来已有自造字,其编码区间未与推荐字集重叠者(即FA40—FEFE及8440-8DFE以外)
(3),原来已有自造初开球编码区间虽与推荐字集重叠但可全部转换为新码者。
(4)原来已有自造字,但经转换为新码后剩余自造字未超过2355个且可以或原意改置于FA40-FEFE及8440-8DFE以外者。2.以下情况仅使用标准字集(即第一与二标准芓集共13461个字符):
(1),有自造字但转码后剩余自造字仍超过2355个者。
(2)原有自造字耸部或部分落于FA40-8440-8DFE两个造字区(推荐字集使用范圍)内,不易或不愿转换为新码者
(二)字形转输与交换规格之使用
BIG- 5码虽已扩编,但其余未能纳入自造字及未来不断新增之自造字依舊会产生交换及传送问题;为使这些自造字于网路传输及档案交换时,仍可作字形显示与列印 特订定以下几项规格:1,文件档案交换传輸规格依SGML(ISO8879)格式及CNS(ISO9541)字形资讯交换规格,订定SGML文件档案内 字形应含之参数2,中文周边装置字形下载规格:包括中文终端机、打印機及其他终端设备系依CNS13479(ISO6429)规范订定字形下载之规 格。
(三)用户需准备之工作
BIG-5码编扩编后纳入之自造字如不作转码,将来交换时一萣会发生一字两码的问题因此在BIG5+码之 新版中文系统软体推出前,用户必需先转换现在自造字之旧码其程序如下:1,建立自造字之旧码與扩编后新码对照表:各单位之造字区管理者可利用第六项工具 [BIG5自造字转标准字对照表管理程式]比对造字区内自造字后建立单位内新/旧码對照表2,清查需要转码之资料档:各单位或集中或各自处理均必需先 清查所有用过原造字区字码之料档,以备进行转码3,自造字旧碼之转换:各项业务负责人或各使用者可利用第七项工具[BIG5自造字转标准字转换程式]及 所建立之单位内新/旧码对照表将所有的[文字档(.txt。)原用之自编旧码转换为BIG5+新码4,单位内造字区之重整;为避免转码后发生一字两码 之现象各单位原有之造字区应作整理,删除已编入BIG5+碼系统者其余自造字则保留原编码或重新编码(重整造字区)。
台湾厂商如:芙蓉坊、昌泰科枝、大同、倚天等公司已将BIG5+码应用于新产品中

  1,编订中文标准交换码之缘起
  72年10月由台湾科学委员会、教育部、中央标准局及本中心 合编[通用不支持繁体汉字的编码标准茭换码]后决议试用二年;试用期满经检讨修正重编并向中央标准局申请订为国家标准,75年8月4日获该局审定公布国家标准编号 [CNS11643];81年51 21日再甴该局因应实际需要修订扩编,并更名为[中文标准交换码(chinesestandard interchange code)]
  本标准适用于中文信息之处理。
  3编码之各项考虑
  中文信息標准交换码是否能普遍地推广使用,使一般使用者共同乐意接受端视其是否具有实用性,因此本码之编码原则研订时曾先就标准码的結构、编码需求等作多方面的周密考虑。
  (一)以教育部所公布的四个字体表之字集为范围。
  (二)根据使用的频率及范围,整理后分别编排于各个字面以适应各个层次之使用者。
  (三)符合国际信息传输上所使用之CNS5205[信息处理及交换用七位码字符集]及CNS7654[信息处理-七位及八位码字符集-延码技术]标准通信定则。
  (四)涵盖常用之外语字母及工商界与学校所使用之文字及符号
  (一),中文标准交换码分为十六个字面每个字面可陈列94列*94行,即8836个字符目前第一至第七字面列有字集,第八至第十一字面预留扩编之用;第十二至第十六字面则为使用者加字区凡未收于本码系统之中文及符号,他用者可视需要自行编订于加字区使用
  总支持文字量達141376个。
   (二)各字面字集排列大抵依使用频率为次序每一字面以常用字为主,第二字面以次常用字为主第三字面以部分罕用字及較常用异体字为主,第四字面以 ISODIS10646第二版之不支持繁体汉字的编码、各单位/信息业用字及户政用字为主第五字面以罕用字为主,第六、第七字面以异体字为主其中第一第二字面字集先于 民国七十五年八月四日公布为国家标准。
  (一)文字之选择及字体悉依教育部[不支持繁体汉字的编码标准字体表]为基准。说明:中 国文字的困扰主要有两方面一是文字的数量太大,二是异体字繁多实际上一般人常鼡的不过七千字左右,新字又不断的增加造成中文资料处理上的困难;而教 育部的标准字体表之字集系经多年之搜集、考证、分析、选取,为较不偏颇最具客观性之用字字集,应能符合一般使用者之需求
  (二),以2个字节(bytes)为中文码编码单位并以十六进位制の文数字表示之。说明:[以2个字节为字码单位于处理时可增加信息传输之速度],符合一般资料处理作业之需要采用十六进位制数字编碼,系因应资料处理人员惯用之进位法用以表示两字节最为简明。
   (三)符合CNS5205及CNS7654之通信定则说明:本编码为符合CNS5305及CNS7654通信定则之规萣,所有控制码均予避开即字码 中之00至20以及7F均予避开,则7BIT字码集共有94个编码位置两个字节革命可编8836个中文字码,订为一字面
  (㈣),依字之使用频率而编排于各不同字面说明:在做信息传输时,若欲传送出现在不同字面上的字必须先送出转字面控制码。为提高传输效率常会一起出现的字编在同一字面中,可减低字面转换的次数
  (五),使先笔画后部首的排列顺序来编订字码说明:烸一字面均按文字灭口笔画数为首序编订字码,使用者以笔画数即可查寻字码
  第一字面:本编码系统为减少字面转换次数,特编最瑺用之中文字及符号、字母、部首等于第一字面;所编字汇及码区分别说明如下:
  符号区之编码位置规划于第一字面之2121至427E有3102个编码位置,目前暂编符号684个所余空位供尔后增添之用。
  已编入之特殊符号及文字类别如下:
  (1)间隔符号1个。
  (2)标点符號28个。
  (3)括号及制表符号89个
  (4),一般符号34个
  (5)、学术符号51个。
  (6)、单位符号31个
  (7)数字符号42个,包括阿拉伯数字10个罗马数字大小写共20个,中国数字12个
  (8)外文字母100个,包括大写英文字母小字英文字母各26个,大写希腊字母、小寫希腊字母各24个
  (9)不支持繁体汉字的编码注音符号42个。

  (10)数字序列符号20个
  (11)中国文字部首213个(夕,夕两部首同归於夕部首中夕部首得于将来扩编时一并列入增订。)
  (12)控制码符号33个
   CNS第一字面之中文字区编码区间由4421至7D4B,所编字汇5401字除包括教育部颁订之“常用不支持繁体汉字的编码标准字体表”所列全部4808字外,并优收 编国中、国小教科书中常用字587字及异体字6字第二字媔:本字集所编字汇7650字,除教育部所颁“次常用不支持繁体汉字的编码标准字体表”外并筛选编入罕用字表中 使用频率较高之1320字。字码區间为2121至7244第三字面:本字集即77年6月行政院主计处电子处理资料中心为搜集仍涵盖教育部罕用及异体字表 中之较常用字,所编订之使用者加字区第14字面字集第一部分字数6148字;原码序不变,字码区间仍为2121至6246第四字面:本字集所编字汇 7298字,除包括原第14字面第二部分171字外并搜集户役政及其他使用单位,ISO10646第2版不支持繁体汉字的编码集、信息业次常用字而成字码区间为 2121至6E5C。第五字面:本字集所编字汇共8603个字系未包含于前4个字面之教育部罕用字。字码区间为2121至7C51第六字面:本字集所 编字汇共6388个字,为不包含于前5个字面且笔画在14画(含)以下之敎育部异体字字码区间为2121至647A。第七字面:本字集所编字汇6539 个字为不包含前6个字面之教育部异体字,字码区间为2121为6655使用者得视自己的需求参考本标准之字集、字序编订内码表。
可用3/0~3/15来指定相对之一至十六中文字面;至于英文之字集则可经由ESC2/8 F 指定于G0字面在7个位元的环境丅,对于各种字面的使用说明如下:1利用SI使用G0字面,并为锁定方式       2,利用SO使用G1字面并为锁定方式。3利用LS2使用G2字面,并为锁定方式4,利用LS3使用G3字面并为锁定方式。5利用SS2使用   为求使用方便,终端设备在开机时可将G0、G1、G2等三个字集分别设定为ASCII、第一字面及第二芓面将G3字集设定为其他较常用的字面。有关这些控制码的使用请参考CNS7654        。
  (二)使用者加字区之使用:
  为适应各种不同性质之Φ文资料处理作业CNS11643特别订定自第十二字面起为使用者加字区;尚未收编于本系统之中文字或符号。由使用者视需要先编于此区内使用;芓面之指定与转换方法与前七个字面相同
  八,CNS11643之推广应用
   本交换码系统依国家标准法之规定系由经济部中央标准局负责检讨增修之,但该局为加强推广该标准之应用特将此系统及中文字型档委托本中心代为办理推广 应用事宜;本中心为顾及标准字型档之完整性,以利此标准之推广另再商得内政部及经济部工业局同意一并提供其他字型档。
  CNS11643目前之应用情形如下:
  (一)台湾之应用情形
  1公文电子交换之标准传递码,行政院“政府机关公文电子传递作业”决定凡是经“交换中心”(交通部管资中心)之公文,一律须先转换为CNS后再传递
  2,EUC码援用CNS之字集及架构:UNIX系统上使用之EUC虽为4BYTE之内码但却全部采用CNS之编码架构及字集;其2个低字节之HIGH均OFF后字碼即与CNS完全相同,因此不需再以对照表方式转换;亦可视为CNS应用于内码之实例
  3,BIG5+码之字源:86年7月完成之“BIG5+”(即BIG-5码之扩编)系以CNS11643为藍本纳编CNS第3字面之4,145个、第4字面之219个一般文书常用之中文字
  (二)国外之应用情形
   ISO10646及UNICODE不支持繁体汉字的编码均收编CNS字集:ISO10646及UNICODE目前共收编20902个不支持繁体汉字的编码,其中17011个字系来自 CNS(第1第2字面及第3字面3895个第4字面56个),现又增编CNS的5881个字因此,不便台湾标准得与國际标准相容国内电脑业者在国际 市场之竞争力得以增强,将来ISO10646及UNICODE发展成熟后使用者亦可得以顺利转换。
  七CCCII编码
   CCCII编码是CHINESECHARACTER CODE FOR INformATION INTERCHANGE 的縮写,是经台湾中研院中美会及国科会等单位支持于1979年12月25日集合由台湾图书馆学者,文字学家及电脑专家组成“不支持繁体汉字的编码整理小组”提出的不支持繁体汉字的编码编 码已广泛用于港台图书馆及与美国网上数字化图书信息中心OCLC系统。该编写系统提供了94面(PLANE)×行(ROW)×94列 (CELL)=830584字符空间;其中每六个面构成一个层(LAYER)提供6×94×94=53016编码空间(最后一层只有四个面)。各层定义 的不支持繁体汉字的編码情况如下:
  第1层符号和繁体不支持繁体汉字的编码。
  第2层大陆的简体不支持繁体汉字的编码。
  第3-12层不支持繁体汉芓的编码异体字。
  第13层日本不支持繁体汉字的编码。
  第14层朝鲜不支持繁体汉字的编码。
  第15层保留字。
  第16层杂项芓(日本与朝鲜)
  第一至十二层的编码的编码存在关联含义,就是说同样的码在这些不同的层表示同一个不支持繁体汉字的编码的不哃变形如第一层表示繁体字,第二层表示大陆简体字(如果有的话)第三至十二层表示其他的异体字,例如以下这个字的三种变形編码的第二三字节是相同的:
  字形类型编码点,层字样
   第一层所定义的字符集如下:第1面/第2行56数学符号第1面/第3行ASCII第1面/第11行35中文标點符号第1面/第12-14行214康熙字 典偏旁部首第1面/第15行41中文数字37拼音符号,4音调符号第1面/第16-67行4808备用字字码37E第1面/第 68行-第3面/第64行17032备用字,字码07E20583罕用字字码为543第3面/第65行含教育 部颁定之罕用字汇12924字,次常用字汇314字第6面/第5行以及康煕字典、中文大辞典、财税资料考核中心字汇、电信传输碼字汇、五大专题码字汇, 与其他信息字汇7345字
  第二层收异体字共11517字,其中包含大陆简体字3625字其它简体字7892字所有各层的第一行均为保留行,共收字53940个

  二,与CNS11643之关系字集相容但字序不同
  ISO10646及UNICODE之不支持繁体汉字的编码集目前共收编20901个不支持繁体汉字的编码其中17011個系来自CNS字集(包括第1第2字面字集全部及第3字面字集3895字,第4字面字集56字)现已增编CNS的5881个字。
  UNICODE即所谓的“统一码”在16位的范围内,將世界各国的文字都放在同一平面上这样就不会出现某一位置在这种语中是这个字,在那种语言版本中是另一个字
  二,码位亦采鼡双字节表示总体编码范围为8140-FEFE,首字节在81-FE之间尾字节在40-FE之间,剔除XX7F一条线总计23940个码位,共收入21886个不支持繁体汉字的编码和图形符号其中不支持繁体汉字的编码(包括部首和构件)21003个,图形符号883个
  全部编码分为三大部分:
  GBK对字形作为如下规定
  1,原则上與GB130011G列(即源自中国大陆法定标准的不支持繁体汉字的编码)下的字形/笔画保持一致。
  2在CJK不支持繁体汉字的编码认同规则的总框架內,对所有的GBK编码不支持繁体汉字的编码实施“无重正形”(“GB化”);即在不造成重码的前提下尽量采用中国新字形。
  3对于超絀CJK不支持繁体汉字的编码认同规则的,或认同规则尚未明确规定的不支持繁体汉字的编码在GBK码位上暂安放旧字形。这样在许多情况下,GBK收入了同一不支持繁体汉字的编码的新旧两种字形
  4,非不支持繁体汉字的编码符号的字形凡GB2312已经包括的,与GB2312保持一致超出GB2312的蔀分,与GB13000保持一致。
  5带声调的拼音字母取半角形式。
   在基本事件环境方面微软公司自WINDOWS95简体中文版始,系统采用GBK代码它包括了TRUETYPE宋体、黑体两种GBK字库(北京中易电 子公司提供),可以用于显示和打印并提供了四种GBK不支持繁体汉字的编码输入法。此外浏览器IE4。0简体繁体中文版内提供了一个GBK-BIG5代码双向转换的 功能。
  许多外挂式的中文平台如南极星、四通利方(RICHWIN)等,提供GBK码的支持包括芓库、输入法和GBK与其他中文代码的转换器。
  在互联网方面许多网站的网页使用了GBK代码,如《人民日报》等
   但是,多数搜索引擎都不能很好的支持GBK不支持繁体汉字的编码的搜索。大陆地区的搜索引擎有些能够不完善地支持GBK不支持繁体汉字的编码检索,比如檢索GBK不支持繁体汉字的编码“鎔”,只有 在网易等极个别的两三个搜索引擎中查能而检索“朱鎔基”三个字,则能在搜索客(CSEEK)、天网等更多的几个搜索引擎中查到而港台和国外的搜索引 擎,基至是知名的具有简体中文查询能力的搜索引擎,如YAHOO!、OPENFIND、   其他应用方媔微软公司的OFFICE 95简体中文版以上版本,提供GBK码的检索和排序(按笔画和拼音两种方式)
  五,显示GBK码表的要求
  1在满足下列环境偠求时,才能保证全部字符显示准确否则可能会出现缺字、显示错误或乱码。
  A 基础环境,WINDOW9X简体中文版或WINDOWS95繁体中文版(或更高的蝂本)+微软简体中文支持。 

一、不支持繁体汉字的编码编码的种类 

    1、 GB2312又称国标码由国家标准总局发布,1981年5月1日实施通行于大陆。新加坡等地也使用此编码它是一个简化字的编码规范,当然也包括其他 的符号、字母、日文假名等共7445个图形字符,其中不支持繁体汉字的編码占6763个我们平时说6768个不支持繁体汉字的编码,实际上里边有5个编码为空白所以总共有6763个 不支持繁体汉字的编码。 

       GB2312规定“对任意一个圖形字符都采用两个字节表示每个字节均采用七位编码表示”,习惯上称第一个字节为 “高字节”第二个字节为“低字节”。GB2312中不支歭繁体汉字的编码的编码范围为第一字节0xB0-0xF7(对应十进制为176-247),第二个字节

    3、 GBK是GB2312的扩展是向上兼容的,因此GB2312中的不支持繁体汉字的编码的编碼与GBK中不支持繁体汉字的编码的相同另外,GBK中还包含繁体字的编码它与Big5编码 之间的关系我还没有弄明白,?孟袷遣灰恢碌摹?GBK中每个不支歭繁体汉字的编码仍然包含两个字节第一个字节的范围是0x81-0xFE(即129-254),第二个字

    为了处理不支持繁体汉字的编码的方便在查找不支持繁体漢字的编码的时候,我们通常会用到hash的方法那怎么来确定一个不支持繁体汉字的编码位置呢?这就和每种编码的排列有关了这里主要給出一种hash函数的策略。 

三、怎样判断一个不支持繁体汉字的编码的是什么编码 

        它 的范围为:高字节从0xA0到0xFE低字节从0x40到0x7E,和0xA1到0xFE两部分判断┅个不支持繁体汉字的编码是否是BIG5编码,可以如上对字符的编 码范围判断即可如何定位呢?那么也想象所有编码排列为一个二维坐标縱坐标是高字节,横坐标是低字节这样一行上的不支持繁体汉字的编码个数:(0x7E-

四、如果判断一个字符是西文字符还是中文字符 

    大家知道覀文字符主要是指ASCII码,它用一个字节表示且这个字符转换成数字之后,该数字是大于0的而不支持繁体汉字的编码是两个字节的,第一個字节的转化为数字之后应该是小于0的因此可以根据每个字节转化为数字之后是否小于0,判断它是否是不支持繁体汉字的编码 

     不支持繁体汉字的编码外部码又称为不支持繁体汉字的编码输入码,是指从键盘上输入不支持繁体汉字的编码时采用的编码不支持繁体汉字的編码输入编码有很多种,目前广泛使用的输入码为: 

     不同的不支持繁体汉字的编码输入方法有不同的外码但内码只能有一个。好的输入方法应具备规则简单、操作方便、容易记忆、重码率低、速度快等特点 

     GB2312-80编码简称国标码。由于不支持繁体汉字的编码数量大无法用一個字节进行编码,因此使用两个字节对不支持繁体汉字的编码进行编码规定两个字节的最高位用来区分ASCII码。这样国标码用两个字节的低7位对不支持繁体汉字的编码进行编码 

     一 个字节只能有128-34=94种状态用于不支持繁体汉字的编码编码(34是指34种控制字符),两个字节可以表示94×94=8836種状态在基本集中不支持繁体汉字的编码是按规则排 列成94行和94列的矩阵,形成不支持繁体汉字的编码编码表其行号称为区号,列号称為位号第一个字节表示不支持繁体汉字的编码在国标字符集中的区号,第二个字节表示不支持繁体汉字的编码在国标字符集中 的位号烸一个不支持繁体汉字的编码在94×94的矩阵中都有一个固定的区号和位号。 

     机内码是指一个不支持繁体汉字的编码被计算机内部系统进行存儲、处理和传输时而使用的编码为了保证中西文兼容,同时又能区分ASCII码和不支持繁体汉字的编码因此,机内码就是将国标码的两个字節的最高位置为“1” 

     字形码又称不支持繁体汉字的编码字模,用于不支持繁体汉字的编码的输出不支持繁体汉字的编码的字形通常采鼡点阵的方式产生。不支持繁体汉字的编码点阵有16×16点阵、32×32点阵、64×64点阵点阵不同,不支持繁体汉字的编码字形码的长度也不同点陣数越大,字形质量越高字形码占用的字节数越多。 

     如图1.1是“国”字24×24的点阵字形深色小正方形可以表示一个二进制位的信息“1”,淺色小正方形表示二进制位的信息“0” 

精选中小企业最主流配置适用於web应用场景、小程序及简单移动App,所有机型免费分配公网IP和50G高性能云硬盘(系统盘)

thrift服务端使用utf8,客户端编码也是但实际使用中,javascript客戶端显示的不支持繁体汉字的编码总是乱码而c++客户端显示正常。 经研究将listview实现多选单选 - 左手程序,右手写诗... - 博客频道 -

gbk中国制定的一套不支持繁体汉字的编码编码规则,用2个字节来表示一个不支持繁体汉字的编码总共可以覆盖2万多个文字。 isolatin-1由于ascii字符集不包括德、法語中的特殊拉丁字符,因此欧洲人发明了iso 8859-1latin 1简称为isolatin-1。 它对ascii做了个扩充涵盖拉丁字母表中特殊语言字符。 乱码原因:使用编辑器编写 html 文件保存编写...

也就是说同一个不支持繁体汉字的编码编码可能不一样,大陆这边直接发送一个“你好”到台湾台湾那边直接接收后很可能昰乱码,因为两地使用的不支持繁体汉字的编码编码不同 这就需要所有...就是用来表示类名、变量名、方法名、数组名文件名等名称的符號。 特别强调java语言与c语言一样,标识符是区分大写的 java标识符规则:java中的类名...

但是在文件编码(gb2312、utf-8 等)不匹配时会产生乱码的错误。 xp 系統不支持 类似微软雅黑的中文 方案一: 你可以使用英文来替代。 比如 font-family...根目录下有这4个文件(目录) 名称 说明 css 用于存放css文件 images 用于存放图爿 index 京东首页 html js用于后期存放javascript文件 运用知识点引入...

vscode下载地址 输入中文乱码问题:如果使用echo输出中文,会乱码 在php的语法中,末尾必须加分号鈈然就报错了(最后一行可以不加分号) 思考:浏览器访问php文件时,过程是怎么样的 变量php是一门弱类型语法,变量的类型可以随意改变 变量其实就是存储数据的容器变量的命名规则1. 不需要关键字进行声明...

外部:浏览器解析js脚本 我们可以以不同的编码方式来保存源码,但洳果浏览器解码方案和源码保存时的编码方案不同就会导致乱码。 当浏览器在加载一个时...如0x10437码点utf-16会分解成d801 dc37两个码元(每个码元16bit)utf-8会分解成f0 90 90 b7四个码元(每个码元8bit)中日韩不支持繁体汉字的编码unicode编码表unicode...

乱码问题流程清晰后乱码问题就很好解决了,把浏览器,nginx,tomcat等都当成水池的话,数據的乱码只能在每一个的入口端和出口端. 如果发生了乱码,那么首先定位...动漫推荐浏览器拿到地址后会对其中非ascii码的unicode字符解析,比如空格会变荿%20,不支持繁体汉字的编码也会变成其16进制对应的编码值,如下例子:上面链接等价于...

jsp页面中告诉浏览器使用什么编码: ...

图片、声音、视频超出于攵本的范畴 hello world utf-8是很有来头的编码,认识世界各个语言能够正确识别语言,相当于是翻译家不会出现乱码的现象 css...通过浏览器如何查看请求報文和响应报文? 浏览器通过输入的地址,将请求报文发送到服务器服务器从请求报文中得到要请求文件的信息,服务器读取它的信息...

我要回帖

更多关于 不支持繁体汉字的编码 的文章

 

随机推荐