- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汉字代码转换办法简述
一、前言
汉字库中某一类汉字不是所有已汉化软件系统都能支持的,即使支持也不是全部输入法都能够输入,而这类汉字在地名和人名中经常见到,例如:西安浐河区、镕、詠等,如果涉及到多个代码集之间的
?
转换,则让系统设计者和系统用户颇感困惑。
笔者通过检索了MICROSOFT和IBM两公司的官方网站关于汉字处理方面的内容,获得了一些比较有用的资料,通过一些试验后,解决了这部分汉字在PC和IBM 主机之间代码转换和通讯的问题。
二、代码集
目前软件系统中使用最多的代码集中,单字节码当属ASCII,可以表达拉丁字母、数字和常用符号等;双字节码当属UNICODE,它除了能表达ASCII所包括的字符外,还可以表达目前世界绝大多数语言的字符,包括汉字字符;扩展ASCII码也常常用来表达一些需要双字节表达的字符。另外,在某些行业所使用的IBM主机系统中,则较多地使用了EBCDIC字符集,既有单字节的表达,也有双字节的表达;。
汉字字符代码集中,GB2312-80和GB13000是先后颁布的两个国家标准。前者可以表达6763个简体汉字和682个非汉字符号;后者1994年颁布,支持20902个字符,兼容ISO 10646-1:1993的CJK字符集标准。
还有一些不太常用的代码集,或者说很少见到软件实现的代码集,如已提及的ISO标准(虽然它不常用,但标准涵盖了以上各个字符集)。
GBK字符集是对GB2312-80的一个扩展,达到GB13000的所有的20902个字符,里面还包含了繁体汉字,总共20975个汉字字符,911个非汉字符号和1894个用户定义字符(如偏旁、部首、笔画等)。
三、代码转换
在各类不同的软件系统之间进行信息传输和通讯,必然涉及到代码转换的问题,PC系统中常有UNICODE和ASCII码之间的转换,PC系统和IBM主机系统之间有ASCII码和EBCDIC码之间的转换。由于篇幅和技术材料所限,以下仅讨论ASCII码和EBCDIC码之间的转换。
1.单字节ASCII和EBCDIC
单字节的ASCII码和EBCDIC码之间的转换比较简单,只需要建立一个对照表即可。(代码的数字表达如无特别说明,均使用16进制,以下同)
部分字符对照码见下表:
表1 单字节ASCII和EBCDIC对照表(部分)
2.汉字双字节ASCII和EBCDIC:
双字节的ASCII采用一个扩展ASCII码(即字节的最高位置1)加一个标准ASCII码或者两个都使用扩展ASCII码来表达一个汉字或非汉字符号;双字节的EBCDIC编码也采用此方式来表达,但双字节字符串两端采用分隔符来与单字节字符区分,首分隔符为0E,尾分隔符为0F。
两者的对照关系见如下图1和图2(GBK标准):
图1 中文简体双字节字符结构图(扩展ASCII码)
图2 中文简体双字节字符结构图(EBCDIC码)
3.汉字双字节码转换算法:
从结构图中可以看出,标准GBK-1、GBK-2覆盖了GB2312-80的字符集,其转换算法涉及到几个繁杂的对照表,对照关系是高字节和低字节拆开经过计算后,再到对照表中查到对应字符,最后合并两新字符而成。由于此两部分的汉字代码比较常见,转换工具比较成熟,容易寻找,这里不进行详细讨论。
我们真正感兴趣的是在GBK-3和GBK-4代码的转换方法上,许多繁体字、偏僻字都集中在这两个区中。参看图3和图4所描述的编排规则,再结合图1和图2,不难发现,由于是顺序编码,其转换算法应比GBK1和GBK2简单许多。
下面仅以GBK-3的扩展ASCII码(以下简称PC码)到EBCDIC码转换关系为例,GBK-3的逆转换和GBK-4的双向转换可以以类似方法设计出来。算法以C语言描述:
sum1 = (f1-0x81) * 0xbe + s1 - 0x3f;
if (s10x7f)
sum1--;
f2 = sum1 / 0xbd +0x81;
s2 = sum1 % 0xbd;
if(f20x81)
s2+=sum1/0xbd;
s2 += 0x40;
if(s2 = 0x80)
s2++;
if(s2 = 0xfe)
{
s2 = s2 - 0xfe + 0x41;
f2++;
}
图3 部分GBK码的编码规则(扩展ASCII码)
图4 部分GBK码的编排规则(EBCDID)
算法细节描述:
○ 首先算法入口f1是汉字PC码的第一字节,s1为第二字节
○ sum1为其在当前PC码区内的顺序值,并考虑到s1没有0x7f和0xff编码;
○ 根据顺序偏移,决定其在对应EBCDIC码的区间第一和第二字节的分布,见图2。但第二字节在0x80、0xfe和0xff没有编码(这点在图2中没有明确说明,笔者通过编码传到IBM主机中测试总结了这个规则);
○ 算法出口结果f2是主机
您可能关注的文档
最近下载
- A.8 公用设备二次回路原理图集20170407.pdf VIP
- 人教版(2024)数学三年级上册《认识直角》PPT课件.pptx VIP
- 流行性感冒诊疗方案(2025 年版)解读PPT课件.pptx VIP
- 医院感染的消毒灭菌与器械管理.pptx VIP
- 新生儿大疱性表皮松解症的护理.pptx VIP
- 2025年呼吸内科医师呼吸系统疾病治疗考核试题及答案解析.docx VIP
- A.1 220kV线路二次回路原理图集..pdf VIP
- 回弹法检测混凝土抗压强度技术规程.pdf VIP
- 苏轼《南乡子 重九涵辉楼呈徐君猷》古诗词PPT.pptx VIP
- (2025年)全科医生培训考试题库及答案.docx VIP
文档评论(0)