用VB程序从二进制流中恢复汉字编码
2011年第8期福建电脑161
用VB程序从二进制流中恢复汉字编码
蒋霞
(苏州工业职业技术学院信息工程系江苏苏州215104)
【摘要】:本文介绍了汉字的存储和处理原理,通过几段典型的VB
程序介绍了从二进制流中恢复汉
字时常见的问题及解决的办法.
【关键词】:汉字处理编程
一
,引言
我们处理的字符信息,通常是中英文混排的,有时
处理不当.会出现汉字不能正常显示的现象.这主要是
由于不了解汉字的存储原理和处理原理.以及处理时
. 未考虑汉字的特点造成的
1.ASCII码和汉字内码
字符被计算机处理时都是以二进制码的形式出现
的.即一个字符对应一个8位二进制数.这种二进制码
的集合就是所谓的AsCII码.
基本的ASCII码有128个.最高位都是0.对应的
十进制数是0—127.键盘上的字符,如英文字母,数字
和一些常用符号.使用基本ASCII码部分.如,数字”0”
的ASCII码用二进制数表示就是001lOOOO(即十进制
数48).
扩展的ASCII码有128个.最高位都是l,对应的
十进制数是128—255.一些制表符和其它符号使用扩
展ASCII码部分.
为解决汉字的存储和显示问题.我国制定了汉字
信息交换码的国标码GB2312,根据GB2312的
,
一
个汉字由两个扩展ASCII码组成.这种高位为1的
双字节汉字编码就是汉字的机内码,简称为内码.如,
汉字”学”的机内码用二进制数表示就是11OlO001
101001l1(即十进制数209和167),用十进制表示就
是53671(209x256+167).
对于字符,计算机存储和处理的是它的ASCII码,
对于汉字.计算机存储和处理的是它的内码,即两位
ASCII码.如,字符串”0学0”在计算机中存储的
是0011000011010001101001110o110000.
2.问题的提出
当从二进制文件中读人连续的二进制流信息时.
如何区分是字符信息还是汉字信息就是我们要解决的
问题.
二,用VB程序解决上述问题
1.将二进制流恢复成正常字符串的VB程序
下面的一段VB程序以二进制方式打开一个文本
文件,再将文本文件内容送入一个二进制数组.
(程序1>
Dimx0AsByte,LAsString
OpenApp.Path&”ha.txt”ForBinaryAccessReadAs#l
‘以二进制方式打开文本文件tm.txt
L=LOF0)’取文本文件字节数
ReDimX(L一1,’重定义二进制数组
Get撑l,,X’将文件内容读人二进制数组
Close#l’关闭文件
3.下面的一段VB程序将二进制数组中的内容恢
复成字符,并显示出来.
<程序2>
DimIAsInteger,SAsString
ForI=0ToL—l
S=S&Chr(X(I))’将二进制数组元素中的内
容按ASCII码的对应关系恢复成字符
NextI
MsgBoxS’显示
如果文本文件alt.txt中不包含汉字.那么这段
代码会正确显示文本文件的内容:如果aa.txt中包含汉
字.那么<程序l>会将一个汉字的两个字节分别存储
在数组X的两个元素中.<程序2>认为这两个元素是
两个独立的ASCII码.分别对它们使用CHR
.由
于ASCII码超过128的字符在屏幕上不可见.所以aa.
txt包含汉字时显示结果不正确.
改进的方法是将一个汉字的两个字节识别成一
组,将第一个字节高移8位(乘以28即256),再组合
第二个字节.最后统一转换.这样,我们将<程序2>改
造成<程序3>.
<程序3>
DimIAsInteger,SAsString,TmpAsSingle
I=0
DoWhileI<=L—l
Ifx(o(=128Then’对于普通字符.直接转换
S=S&Ch~XO))
I=I+1.
Else’与下一元素组合起来是一个汉字
Trap=256#x0)+x(I+l1
S=S&Chr(Tmp)
I=I+2
End?
Loop
MsgBoxS’显示
2011年第8期福建电脑183
能力和可持续发展能力为根本目标这就要求教师在
教学过程中要满足学生的专业需要和兴趣爱好.充分
调动学生的创造性思维和主观能动性而采用等级考
试的考核方式.学生只能是按照考试题目来学习,疲于
记忆刁钻的知识点.很容易造成学生的思维定式.同时
教师在有限的课时内.只能以常考题目作为重点讲解.
限制了知识扩展.而教师在备课中,整天研究考试题
目,一个个成为猜题,押题的高手,教学理论研究和教
学改革的创新自然而然的荒废下来.计算机技术的变
化日新月异.教学内容与时俱进是其固有特点.而资格
证
的考试却总是以不变应万变.考试内容更新极慢.
以全国计算机等级考试一级MS一0mce为例.当所有人
都在用Office2003办公软件编辑文档的时候.它的考
试内容还是Office2000.而现在Office2010已经发布.
它才刚刚换成Omce2003.这样的知识更新速度.学生
没毕业就落伍了.不利于适应将来的就业岗位.
三,计算机应用基础课”以证代考”的应对措施
科学选择考证项目.学院由主管院领导,教务处和
职业技能鉴定所联合成立职业资格证书评审机构.对
各系,部提交的”以证代考”项目进行审核.然后充分听
取相关一线教师的意见,形成共识后.组织有关专业的
学生进行仿真模拟检验.取得良好反应后.最终形成严
格的政策文件予以执行.执行过程中.要严密组织,严
格要求,保证证书的严肃性和公证性.同时把证书考核
的合格率作为教师教学质量的评价依据.引导学生积
极参加证书的考核,引导教师认真教学.从而提高学院
的教学质量和学生的就业质量
素质教育内化于考试.调整教学计划.重修教学大
纲.不再选用考证机构的考试辅导教程.自编适合素质
教育的教材,将素质教育的观念内化于考试.使学生在
掌握应用能力的同时,兼顾通过资格证考试.按照弹性
分层教学的目的编写机遇任务驱动的教材.使不同程
度学生均有所得.
开发了教学辅助系统.采用全国计算机等级证书
考试以来.我们开发了基于”以证代考”模式高职高专
《计算机文化基础》教学辅助系统.该系统由.-基于”以
证代考”模式的《计算机文化基础》教学系统”,”计算机
文化基础(全国计算机等级一级MSOFFICE)练习与
模拟考试系统”两部分组成.主要内容包括”键盘和指
法练习”,Windows操作系统”,”文字处理软件Word”,”
电子
软件Excel”,”演示文稿软件Powerpoint’?,”网
络”六大部分组成;每部分又分为”教学目标”,”教学任
务”,”自学讲议”,”电子教案”,”综合实训”,”学生作品”
六大模块构成.”计算机文化基础(全国计算机等级一
级MSOFFICE)练习与模拟考试系统”分为”单元练习
系统”,”考试系统评分程序”,”考试系统客户端”三大
模块.计算机文化基础(全国计算机等级一级MSOF.
FICE)练习与模拟考试系统主要由学生自测考试及系
统管理两个模块组成.通过该系统.学生既可以根据自
己的情况在老师的指导下.按需学习.解决了学生计算
机基础知识非零起点的问题,避免不必要的重复学习.
又可以选择课程某章节的内容进行预习,复习,完成综
合实训,进行自学讨论,查看任务的操作步骤.该系统
切实为学生提供了一个自主学习场景,使学生在《计算
机文化基础》课程学习中事半功倍.
总之.经过几年来计算机应用基础课”以证代考”
的教学实践,我们认识到只有不断反思,不断总结,才
能使”以证代考”更加适合高职教学的实际.根据反馈
信息修订计划,调整教学的行为,从而提高教学实效.
更好的发挥它的积极作用
参考文献:
【1】王准.论高职高专计算机应用基础公共课教与学?】.考试周刊,
2010,(15).
【2】宫文颖.计算机基础改革新思路一以证代考?].辽宁高职,
2007,(5).
p】孙俊逸.计算机教育教学改革与实践【M】.武汉:华中科技大
学出版社.2008.
【4】牛军涛.计算机文化基础【M].北京:中国铁道出版社.2010.
(上接第161页)
通过以上几个小程序就能够从二进制文件中分辩
出汉字编码,希望以此抛砖引玉.
参考文献:
【1](VisualBasic程序设计》清华大学出版社谭浩强等编着
【2】《计算机组成原理》电子工业出版社罗克露等编着
[3](Visua~Basic程序设计教程》高等教育出版社龚沛曾等编