为适应计算机处理汉字信息的需要,我国于1981年发布了《信息处理交换用汉字编码字符集 基本集》GB2312-80
GB2312将代码表分为94个区,对应第一字节;每个区94个位,对应第二字节,两个字节的值分别为区号值和位号值加32(2OH),因此也称为区位码。01-09区为符号、数字区,16-87区为汉字区,10-15区、88-94区是有待进一步标准化的空白区。GB2312将收录的汉字分成两级:第一级是常用汉字计 3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。故而 GB2312最多能表示6763个汉字
汉字系统对每个汉字规定了输入计算机的代码,即汉字的外部码,键盘输入汉字是输入汉字的外部码。计算机为了识别汉字,要把汉字的外部码转换成汉字的内部码,以便进行处理和存储。为了将汉字以点阵的形式输出,还要将汉字的内部码转换为汉字的字形码,确定一个汉字的点阵。并且,在计算机和其它系统或设备需要信息、数据交流时还必须采用交换码。 (1) 外部码 外部码是计算机输入汉字的代码,代表某一个汉字的一组键盘符号。外部码也叫汉字输入码。为了建立友好的用户界面,输入码的规则必须简单清晰、直观易学、容易记亿、操作方便、码位短、输入速度快、重码少,既符合初学者的学习,又能满足专业输入者的要求,便于盲打。汉字的输入方法不同,同一个汉字的外码可能不一样。人们根据汉字的属性(汉字字量、字形、字音、使用频度)提出了数百种汉字外码的编码方案。由于用户不同,用途不同,各自喜爱的编码方式也不尽相同,故对用什么编码方案不能强求统一。
例如拼音码和五笔字型比较受一般用户的欢迎。 (2) 内部码 汉字内部码亦称为汉字内码或汉字机内码。计算机处理汉字,实际上是处理汉字的代码。当计算机输入外部码时,通常要转成内部码,才能进行存储、运算、传送。一般用二个字节表示一个汉字的内码。内部码经常是用汉字在字库中的物理位置表示,如汉字在字库中的序号或汉字在字库中的存储位置表示。注意一般情况下,汉字的内部码不能与西文字符编码(ACSII码、EBCDIC码等)发生冲突,并容易区分汉字与西文字符;尽可能占用少的字节表示尽可能多的汉字;与标准交换码兼容(与交换码有尽可能简单明确的对应关系;运算时不产生二义性和不确定性)。 除了二字节汉字内部码外,还有三字节内部码、四字节内部码、带引导码的汉字内部码、带符号的汉字内部码、带括号的汉字内部码等。 (3) 交换码 当计算机之间或与终端之间进行信息交换时,要求它们之间传送
的汉字代码信息完全一致,国家规定了信息交换用的标准汉字交换码"GB312-80信息交换用汉字编码字符集(基本集)",即国标码。国标码共收集了7445个图形字符,其中汉字6763个,一般符号、数字、拉丁字母、希腊字母、汉语拼音等709个。 (4) 汉字输出码 又称汉字字形码或汉字发生器的编码。为输出汉字,对汉字字形经过点阵的数字化后的一串二进制数称为汉字输出码。
汉字内部码:汉字在计算机内的编码(简称内码)
ASCII码用1个字节(最左边位为0)表示1个英文字符
汉字用两个字节(共16位二进制数编码)表示, 两字节首位都是“1” ,这种汉字编码最多可以表示 27×27=128×128=16384个汉字
字型码是一些汉字输入软件所定义的汉字编码规则,是把汉字抽象为一些字根(字型)组合出来的,根据书写规则编码。
GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集--基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。
GB2312收录简化汉字及符号、字母、日文假名等共7445个图形字符,其中汉字占6763个。
GB2312规定"对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示”,习惯上称第一个字节为"高字节”,第二个字节为"低字节”。GB2312-80包含了大部分常用的一、二级汉字,和9区的符号。该字符集是几乎所有的中文系统和国际化的软件都支持的中文字符集,这也是最基本的中文字符集。其编码范围是高位0xa1-0xfe,低位也是0xa1-0xfe;汉字从0xb0a1开始,结束于0xf7fe。
GB2312将代码表分为94个区,对应第一字节(0xa1-0xfe);每个区94个位(0xa1-0xfe),对应第二字节,两个字节的值分别为区号值和位号值加32(2OH),因此也称为区位码。01-09区为符号、数字区,16-87区为汉字区(0xb0-0xf7),10-15区、88-94区是有待进一步标准化的空白区。GB231
2将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。故而GB2312最多能表示6763个汉字。
GB2312的编码范围为2121H-777EH,与ASCII有重叠,通行方法是将GB码两个字节的最高位置1以示区别。
ASCII码:美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值。
ASCII码于1968年提出,用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的个人计算机都使用此码。ASCII
码划分为两个集合:128个字符的标准ASCII码和128个字符的扩充ASCII码。
每个汉字有个二进制编码,叫汉字国标码。
在我国汉字代码标准GB2312-80中有6763个常用汉字规定了二进制编码。
每个汉字使用2个字节。
ascii文字是啥
GB2312-80 GB2312将代码表分为94个区,对应第一字节;每个区94个位,对应第二字节,两个字节的值分别为区号值和位号值加32(2OH),因此也称为区位码。01-09区为符号、数字区,16-87区为汉字区,10-15区、88-94区是有待进一步标准化的空白区。GB2312将收录的汉字分成两级:第一级是常用汉字计 3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。故而 GB2312最多能表示6763个汉字。
使用UCDOS的HZ12.bin的汉字库
显示一个汉字的库的程序
#define NumofByte 24 //一个汉字字模的字节数
unsigned long Gb2Hz(char* p_hz) //由汉字的内码取得在字库的索引
{
unsigned long index=0;
index=94*((p_hz[0]-0xa1)&0x7f)+((p_hz[1]-0xa1)&0x7f);
return index;
}
void showhz16(int x,int y,char* p_hz){
int i,j;
int color;
unsigned long index;
char *ptr;
index=Gb2Hz(p_hz);
ptr=(char *)(Hzk12Addr+index*NumOfByte);
for(i=0;i <NumOfByte/2;i++){
for(j=0;j <8;j++)
//DrawDot(x+j,y+i,(ptr[2*i]&(0x01 < <(7-j)))!=0?BLACK:WHITE);
for(j=0;j <8;j++)
//DrawDot(x+8+j,y+i,(ptr[2*i+1]&(0x01 < <(7-j)))!=0?BLACK:WHITE);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论