欢迎来到天天文库
浏览记录
ID:20908801
大小:49.50 KB
页数:5页
时间:2018-10-17
《gbk汉字编码技术研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、GBK汉字编码技术研宄杨善超福建师范大学数学与信息学院摘要:文字编码是现代社会信息传播的基础,对文化发展非常重要。木文简述了常见的汉字编码方案,重点分析了GB2312、GBK编码标准的文字编码规则,并通过C语言、Excel进行GBK文字符号的分类显示。关键词:GBK编码;GB2312编码;C语言;Excel;作者简介:杨善超(1979-),男(汉族),山东东平人,讲师,硕士,主要研究方向为图形图像处理、多媒体信息安全。基金:福建省教育厅B类项目(JB08049)1.引言文字的数字化对不同民族、种族的交流有非常重要的意义,有利于文化传播;文字的数字化离
2、不开文字的编码,这些编码方式会影响古籍、嵌入式设备上的字符输出显示。文字编码标准、尤其汉字编码标准有很多,很有研究的必要,因此本文先对现有汉字编码标准进行介绍,然后重点对编码标准GB2312-80和GBK进行分析。2.常见文字编码技术文字的数字化是计算机处理文字的棊础,其主要过程是将文字映射为二进制整数,又称为文字的编码,而真正写入内存的文字编码称为内码。信息存储的最小单位是位(b,bit),基本单位是字节(B,Byte),lB=8b。内码一般由固定长度的字节组成。目前的文字编码标准主要有ASCII、GB2312、GBK、Unicode等[1],下面
3、分别对这些编码标准做介绍。ASCTT编码是最简单的西文编码方案。GB2312、GBK、GB18030是汉字字符编码方案的国家标准。ISO/IEC10646和Unicode都是全球字符编码的国际标准。下面对与汉字相关的编码方案做简耍的分析。2.1ASCII编码标准ASCII码使用7位二进制来编码常见的西文字符,对应1个字节的低7位,最高位为0,可以表示128个符号,其中ASCII码小于32的是控制字符。32~126表示可打印字符。扩展ASCTT码采用最高位为1的8位二进制来表示。但西方国家对扩展ASCII定义的字符集不统一。表1GBK编码标准编码空间下
4、载原表类别汉字区,GBK2区BI汉字区,GBK3区8汉字区,GBK4区A,非汉字区,GBK1区A非汉字区,GBK5区A:用户自定义1区Ay用户自定义2区Ff用户自定义3区A2.2GB2312-80编码标准GB2312-80是1980年制定的中国汉字编码国家标准。共收录7445个字符,其中汉字6763个。GB2312兼容标准ASCII码,采用扩展ASCII码的编码空间进行编码,一个汉字占用两个字节,每个字节的最高位为1。具体办法是:收集了7445个字符组成94*94的方阵,每一行称为一个“区”,每一列称为一个“位”,区号位号的范围均为01-94,区号和
5、位号组成的代码称为“区位码”。区位输入法就是通过输入区位码实现汉字输入的。将区号和位号分别加上2011,得到的4位十六进制整数称为国标码,编码范围为0x212r0x7E7E。为了兼容标准ASCII码,给国标码的每个字节加80H,形成的编码称为机内码,简称内码,是汉字在机器中实际的存储代码,GB2312-80标准的内码范围是OxA1A1〜OxFEFE。2.3.GBK编码标准《汉字内码扩展规范》(GBK)于1995年制定,兼容GB2312、GB13000-1、BIG5编码中的所有汉字,使用双字节编码,编码空间为0x8140〜OxFEFE,共有23940个
6、码位,如表1所示[3][4],其中GBK1区和GBK2区也是GB2312的编码范围。收录了21003个汉字。1.字符的输入3.1基于C语言进行字符的输入和显示WINDOWS操作系统的中文版,默认釆用“ANSI/OEMh简体中文GBK”进行文字编码。打印GBK字符集,需要将GBK编码按照2个字节一组写入文件,用记事本打开文件时会按照默认的字体显示对应编码的字符。FILE*fp=fopen(nGBKHZ.TXTn,Mwbn);unsignedinthigh,low;inti;unsignedintstart[5]={0xB0Al,0x810xA840};
7、unsignedintend[5]={0xF7FE,OxAOJ0xA9A0};for(i=0;i<5;i++)for(high=((start[i]»8)&0xFF);&0xFF);high++)for(low=(start[i]&0xFF);low<=(({fputc(high,fp);fputc(lfclose(fp);3.2基于Excel的字符输入和显示Excel表格可以比较直观的显示GBK编码字符集。在打开的Excel文件中按八LT+F11键,进入VBA代码模式编写如下过程,运行过程可在Excel看到GBK的字符集。SubOutputGBKF
8、orRow=0To255Forcol=0To255Sheetl.Cells(Row+1,col+1)=col
此文档下载收益归作者所有