GB BIG5 转码原理全解析

GB BIG5 转码原理全解析

原文来源:leilycn.blog.163.com 已失效,在这里重新发布

港台Windows所使用的语言代码是Big5编码,而大陆内地的Windows是国标(GB),所以如果那些程序文字语言不是按照Unicode编码设计的,到GB的windows就会出现乱码问题,但操作系统内含多套语言方案,会自动识别,所以不在此讨论。

这里不叙述BIG5码和GB码的区别,以及编码规则,汉字库等。主要论述在我们大部分中国人使用的GB简体中文操作系统上,BIG5乱码原因、内码转换软件的转码原理,游戏程序环境下正确显示文字等,注意:本文所针对的是Widows简体中文系统!

 

一、下面先看下面的例子:

BIG5 Windows操作系统下的文字显示:

如:“翻譯”,但是选择为GB编码则变成“陆亩”。

 

 

 

 

注:要在微软简体中文环境下显示BIG5,可以设置语言系统为“中国台湾”;也可以直接在IE中模拟显示,设置为相应编码,就可以看到相应系统上的显示情况了。实际上,在GB系统上是自动选择为“简体中文”,而在BIG5系统上是自动选择为:“繁体中文”。

上面的例子可能比较难明白,计算机到底是怎样转换,为什么会出现乱码的。这里涉及到机码的问题。一个字的机码是不变的,按上图对应关系,分别在GB系统和BIG5系统下:

 

可见,不同系统中转换的时候,字符的16进制代码未变,也就是计算机所处理的机内码是不变的。之所以转换时字符变化甚至乱码,是由于BIG5系统和GB5系统的编码规则不一样,简单的说,如果给他们规定“机内码对应输出字符规则表”,两套编码规则表是不同的!如,在BIG5系“CC4B”对应字符为 “妶”,而在GB5系统“CC4B”对应字符为“蘇”;在GB系统“C8D8”对应字符为“蓉”,而BIG5系统却没有对应字符,故显示问号。

二、下面说说字处理软件和其他如游戏程序的转换功能:

先了解以BIG5中文操作系统为平台,字处理程序内核为GB语言编码的情况:

1、BIG5下记事本的“蘇蓉蓉”,复制到GB字处理程序,其自动显示为“妶? ?”,对“妶? ?”进行GB→BIG 操作后,显示为“蘇蓉蓉”。

2、GB字处理程序下,输入“蘇蓉蓉”,对“蘇蓉蓉”进行BIG→GB操作后,显示为“妶? ?”。把“蘇蓉蓉”复制到BIG5记事本,其自动显示为“默籘籘”;

3、GB字处理程序下,输入“默籘籘”,对“默籘籘”进行BIG→GB操作后,显示为“蘇? ?”。

 

再看看以GB中文操作系统为平台,字处理程序内核为GB语言编码的情况:

1、GB下记事本的“蘇蓉蓉”,复制到GB字处理程序,显示不变,对其进行GB→BIG 操作后,显示为“默籘籘”。

2、GB字处理程序下,输入“蘇蓉蓉”,对“蘇蓉蓉”进行BIG→GB操作后,显示为“妶? ?”。把“蘇蓉蓉”复制到BIG5记事本,显示不变;

3、GB字处理程序下,输入“默籘籘”,对“默籘籘”进行BIG→GB操作后,显示为“蘇蓉蓉”。

 

最后重点看以GB中文操作系统为平台,游戏程序内核为BIG5语言编码的情况:

1、GB输入法下的“苏蓉蓉”,输入到游戏程序,自动变为“1/51/5”。

2、GB输入法下的“默籘籘”,输入到游戏程序,自动变为“蘇蓉蓉”。

GB输入法下的“綠経”,输入到游戏程序,自动变为“鄭磊”。

GB输入法下的“绿経”,输入到游戏程序,自动变为“蟯磊”。

GB输入法下的“貉航”,输入到游戏程序,自动变为“碧瑶”。

3、GB下游戏拼音输入法BIG5输出下的“苏蓉蓉”,输入到游戏程序,变为“蘇蓉蓉”,但其在GB记事本中则显示为“默籘籘”。

 

小技巧:若手头上没有游戏拼音输入法,可以这样在BIG5游戏中输入:

若你想要的名字为“苏蓉蓉”,用GB字处理软件,GBBIG得到“默籘籘”(一般都是繁体),然后在游戏中输入名字处,用可打繁体的微软拼音打出“默籘籘”,输出到游戏名字框中,其会自动变成“蘇蓉蓉”,就OK啦。

 

可知,只要代码为 C4AC BB54 BB54 ,则在GB系统上显示为默籘籘,在BIG5系统上显示为蘇蓉蓉。GB规则表和BIG5规则表的对应法则是无法用一种函数关系转换的,要使GB上“苏蓉蓉”和BIG“蘇蓉蓉”对应,只能是查找规则表来对应的。内码转换软件就代替我们做了这项工作。

 

三、内码转换软件工作原理

对应关系示意图中,每个字符的代码是不一样的,见“”指示。要将 GB的“苏蓉蓉”转换为 BIG5码,软件所做的就是“↓↓↓”过程,实质上就是把“CBD5 C8D8 C8D8”转为“C4AC BB54 BB54”,转换后的代码,到BIG5系统就OK了。有的字符显示“?”,是因为代码在该规则表下无对应字符(代码不在该字符集范围内,或对应其他特殊符号)。

对于GB下运行BIG5游戏及程序,道理是一样的。因为大多数台湾繁体中文游戏程序不能完成“↓↓↓”的过程,所以我们需要手动输入(见小技巧)或是利用游戏拼音输入法。游戏拼音输入法也就是在内存中完成转换的过程而已——先设定为BIG5输出,手打拼音“SuRongrong”,输入法完成“↓↓↓”过程,把“SuRongrong”地址映射至“C4AC BB54 BB54”(这是重点,其他输入法如智能ABC,“SuRongrong”地址映射至“CBD5 C8D8 C8D8”),从而可以在繁体游戏的BIG5环境正确输出为“蘇蓉蓉”!

以上为个人研究,如有错误恳请指正。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值