区位码、国标码、机内码

1980年,为了使每个汉字有一个全国统一的代码,我国颁布了汉字编码的国家标准:GB2312-80《信息交换用汉字编码字符集——基本集》,这个字符集是目前国内所有汉字系统的统一标准。它规定了用两个字节来表示一个汉字,每个字节都只能使用低7位,共有128*128种状态,又由于ASCII中的控制代码在汉字系统中也要使用,所以只剩下94*94=8836种状态用来表示国标码规定的6763个汉字和682个全角字符。每个字符都对应了唯一的区位码、国标码和机内码。

区位码

区位码是一个四位的十进制数,前两位叫做区码,后两位叫做位码。区位码共有94个区(行),每个区有94个位(列)。

1~9区 特殊字符区
10~15区 用户自定义区
16~55区 一级汉字
56~87区 二级汉字

一级汉字:3755个常用的汉字,按拼音排序;二级汉字:3008个汉字,按部首排序。

为了处理与存储的方便,每个汉字的区号和位号在计算机内部分别用一个字节表示。如,汉字“学”的区号为49,位号为07,区位码为4907D,对应的二进制表示为

00110001 00000111

区位码不能用于通信,因为它可能与通信使用的控制码(00H~1FH)发生冲突。

国标码

为了进行汉字通信,将区位码的区码和位码都加20H,避开了控制码,就得到了国标码。国标码用十六进制表示,如,汉字“学”的国标码为5127H。

机内码

由于汉字与英文字符通常混用,所以汉字信息如不加以特殊标识就会与ASCII码混淆,如汉字“学”的国标码为51 27H,在ASCII中代表“Q”和“‘”。此问题的解决方法之一是将汉字编码每字节的最高位置为1,即国标码两字节分别+80H,则汉字“学”的机内码为D1A7H。

机内码用十六进制表示。

GB2312简体中文编码表是机内码对照表。

时间: 2024-10-11 05:38:07

区位码、国标码、机内码的相关文章

中文区位码、国标码、机内码、输入码(外码)、字形码等

区位码 为了使每一个汉字有一个全国统一的代码,区位码是国家规定的94*94的一个方阵,其中每行叫做一个区,每列叫做一个位,组合起来就组成了区位码,我们可以在相关网站查询某个汉字的区位码,例如汉字“我”的区位码是46 50 ,标识“我”在46区,50位. 国标码 区位码+2020H. 国标码并不等于区位码,它是由区位码稍作转换得到.其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,;这样就得了一个与国标码有一个相对位置差的代码,;再将这个代码的第一个字节和第二个字节分别加上20H,就得

vc 文字转换到机内码,输入汉字和数字, 输出一串16进制码(数字-〉ASII码,汉字—〉国标码)

// 可以用,此程序实现的是是文字转换到机内码.机内码=国标码+8080H,不过学习了. //此程序是利用汉字在机器内输出就是机内码的原理,直接保存的,其实挺简单. //输入一串汉字和数字的混合字符, 经过程序转换, 对应输出一串16进制码(数字-〉ASII码,汉字—〉国标码) CString temp; GetDlgItemText(IDC_EDIT1,m_hanzi);//将汉字保存到变量m_hanzi unsigned char *b=new unsigned char[m_hanzi.G

汉字区位码、国标码(交换码)和机内码转换方法

一.区位码 为了适应计算机处理汉字信息的需要,1981年我国颁布了GB2312国家标准.该标准选出6763个常用汉字(其中,一级常用汉字3755个,二级汉字3008个)和682个非汉字字符,并为每个字符规定了标准代码,以便在不同的计算机系统之间进行汉字文本交换. GB2312字符集构成一个94行.94列的二维表,行号称为区号,列号称为位号,每一个汉字或符号在码表中的位置用它所在的区号和位号来表示. 为了处理与存储的方便,每个汉字的区号和位号在计算机内部分别用一个字节来表示.例如,"学"

嵌入式开发之字符叠加---gb2313 国标码,utf8 国际码,unicode 无码

(1)国标码简介 (2)编码转换 (3)时间获取 (4)显示切换 最近做了个字符叠加,包括时间叠加,字符中文叠加,位置移动,等功能开启.因为一般的字符叠加的点阵式16位,然后填充着16位的编码是gb2313编码,比如说视讯两个字, 先是视: 编码类型 二进制编码 十六进制编码 Unicode 10001001 11000110 0x89C6 UTF-8 11101000 10100111 10000110 0xE8A786 GB2312 11001010 11010011 0xCAD3 然后讯:

HDOJ 2030 汉字统计(借此题来谈谈ASCII码与汉字机内码)

ASCII码与汉字机内码: 在做HDOJ 2030 汉字统计一题中在讨论区看到有楼主发帖说汉字的ASCII码值为负数.但书中的ASCII码的范围又是0-255(其中0--127是国际通用标准码,128--255是拓展码). 经过请教大牛与查阅资料得,汉字并没有ASCII码,汉字是又机内码表示的,即ansi编码,是系统根据当前地区然后确定的当地编码,例如大陆的ansi编码就代表 国标码GBK编码.各个地区之间的机内码是有差异的. 汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一

用C++程序理解汉字的机内码表示

汉字的编码是非常多刚開始学习的人不easy搞不明确的事情.最早的汉字字符集是GB2312-80,收入汉字6763个,符号715个,总计7478个字符,大陆普遍使用的简体字字符集.本文借助于一个能输出这些字符的简单的C++程序,体验汉字字符的编码. 先简单介绍一下GB2312-80的概况. 1.区位码 每一个汉字及符号都有一个区位码,即每一个汉字有一个区号(两位十进制)和一个位号(两位十进制).一共分了94个区,每一个区中有94个汉字. 例如以下图了当中第1区和17区中的汉字:  2.国标码 汉字

C语言中两位ASCLL码可以表示汉字

最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ********************************************************************** 参考资料一:http://zhidao.baidu.com/link?url=YDoT2OLdKEElDQ86Ce_wEtKt9Nrn2yJ8TIb9JkasvaLvi8D66RRwSvxn2DkFRVM_OOnq4fCoJPA-19AmpPeypa ?"206 210

web--编码

首先对于编码需要了解的基础应该有基本了解: 常见字符编码:ascii(1个字节,8位).iso-8859-1(不支持中文).gb2312.gbk.gb18030(中国的国标码).utf-8(支持全世界的编码,2个字节,16位) HTTP协议:请求协议(请求首行,请求头,空行,请求体):响应协议(响应首行,响应头信息,空行,响应体) 对于浏览器中,出现乱码,原因就是浏览器跟服务器使用的编码跟解码不是同一种码,所以只有能够保证浏览器跟服务器使用同一种码,对于乱码问题就可以迎刃而解. 对于浏览器跟服务

iOS开发日记7-字符编码(UTF8转码)

今天博主有一个字符转码的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识 ,今天博主和大家分享一下自己的总结. 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0