怎样从二进制流中恢复汉字信息_第1页
怎样从二进制流中恢复汉字信息_第2页
怎样从二进制流中恢复汉字信息_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

怎样从二进制流中恢复汉字信息

摘要:本文介绍了汉字的存储和处理原理,通过几段典型的程序介绍了从二进制流中恢复汉字时常见的问题及解决的办法。关键词:汉字处理编程我们处理的字符信息,通常是中英文混排的,有时处理不当,会出现汉字不能正常显示的现象。这主要是由于不了解汉字的存储原理和处理原理,以及处理时未考虑汉字的特点造成的。

1ASCII码和汉字内码

字符被计算机处理时都是以二进制码的形式出现的,即一个字符对应一个8位二进制数。这种二进制码的集合就是所谓的ASCII码。

基本的ASCII码有128个,最高位都是0,对应的十进制数是0-127。键盘上的字符,如英文字母、数字和一些常用符号,使用基本ASCII码部分。如,数字“0”的ASCII码用二进制数表示就是00110000(即十进制数48)。

扩展的ASCII码有128个,最高位都是1,对应的十进制数是128-255。一些制表符和其它符号使用扩展ASCII码部分。

为解决汉字的存储和显示问题,我国制定了国标GB2312,根据GB2312的规定,一个汉字由两个扩展ASCII码组成。这种高位为1的双字节汉字编码就是汉字的机内码,简称为内码。如,汉字“学”的机内码用二进制数表示就是1101000110100111(即十进制数209和167),用十进制表示就是53671(209×256+167)。

对于字符,计算机存储和处理的是它的ASCII码,对于汉字,计算机存储和处理的是它的内码,即两位ASCII码。如,字符串“0学0”在计算机中存储的内容是00110000110100011010011100110000。2几个处理字符的程序2.1将二进制流恢复成正常字符串的VB程序

下面的一段VB程序以二进制方式打开一个文本文件,再将文本文件内容送入一个二进制数组。

‘<程序1>

DimX()AsByte,LAsString

OpenApp.Path&"\aa.txt"ForBinaryAccessReadAs#1

‘以二进制方式打开文本文件aa.txt

L=LOF(1)‘取文本文件字节数

ReDimX(L-1)‘重定义二进制数组

Get#1,,X‘将文件内容读入二进制数组

Close#1‘关闭文件

下面的一段VB程序将二进制数组中的内容恢复成字符,并显示出来。

‘<程序2>

DimIAsInteger,SAsString

ForI=0ToL–1S=S&Chr(X(I))‘将二进制数组元素中的内容按ASCII码的对应关系恢复成字符

NextI

MsgBoxS

‘显示

如果文本文件aa.txt中不包含汉字,那么这段代码会正确显示文本文件的内容;如果aa.txt中包含汉字,那么<程序1>会将一个汉字的两个字节分别存储在数组X的两个元素中,<程序2>认为这两个元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论