首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

刨根究底字符编码之六——简体汉字编码中区位码、国标码、内码、外码、字形码的区别及关系

简体汉字编码中区位码、国标码、内码、外码、字形码的区别及关系 GB2312、GBK、GB18030等GB类汉字编码方案的具体实现方式是怎样的?区位码是什么?国标码是什么?...注意,国标码中是分别将区位码中的“区”和“位”各自加上32(20H)的,因为GB2312是DBCS双字节字符集,国标码属于双字节码,“区”和“位”各作为一个单独的字节。...很显然,如果直接采用国标码作为计算机直接处理的机内码的话,还将会产生另一个弊端,即用ASCII码编码的英文字符在GB2312编码环境中无法打开,一打开就会乱码。...这样一来就彻底区分开了ASCII码和GB2312码。这也是为什么国标码还要加上(80H,80H)才能得到机内码的原因。 5....GB2312区位码、国标码、内码对照表(其中汉字内码B0A1~F7FE,共6763个) 五、外码(输入码、输入法编码) 1.

1.9K10

【自己动手画CPU】计算机数据表示

闯关目的 第1关:汉字国标码转区位码实验 (1) 掌握汉字机内码、区位码,最终利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换; (2) 理解字形码显示的基本原理...,能在实验环境中实现汉字 GB2312 编码的点阵显示。...,能在实验环境中实现汉字 GB2312 编码的点阵显示。...闯关内容 第1关:汉字国标码转区位码实验 在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成国标码转区位码的子电路设计。...其中输入引脚为16位的 GB2312 双字节国标码;输出为区号和位号(区号位号均从1开始计数),转换子电路引脚定义,请在电路中复制对应隧道标签信号使用,注意不要增改引脚,不要修改子电路封装,以免影响子电路在其它电路模块中的正常调用

24910
您找到你想要的搜索结果了吗?
是的
没有找到

GB2312编码_gb2312是简体中文的编码格式

在区码和位码的基础上,分别加上0XA0的偏移,便是GB2312编码; 我们制作ASCII字库时,一般只做可以显示出来的字符字模,前面命令型的ASCII字符,我们不做字模,即从“空格开始”,ASCII...该空格的区位码是“0101”,所以任意一个汉字的偏移地址公式是,Address= ( (CodeH-0x30-1)*94+(CodeL-0x30-1) )*( 16*16 )/8;CodeH是GB2312...的第一个字节,CodeL是GB2312的第二个字节,减一 是因为区位码是从第一区开始的,而字模数组表是从0开始的; (以上的计算均是按16*16取模时计算的) 当我使用单片机编程工具写程序时,编译的时候...,编译器会根据我们的选择(如MDK)会自动将字符串转换成机内码即GB2312形式进行存储,所以我们可以根据GB2312与区位码的关系进行寻找地址偏移。...uint16 hz ) 可以这样找区位码,CodeH=hz>>8; CodeL=hz&0x00ff; 注意英文和汉字的参数定义类型一个是8位uchar 型的,一个是u16位int16型的,因为GB2312

1.2K20

《Java从入门到失业》第三章:基础语法及基本程序结构(3.6):基本数据类型及字符集编码(字符编码和char型)

为了满足这种需要,中国国家标准总局发布了一系列的汉字字符集国家标准编码,统称为GB码,或国标码。...实际发布的国标码是通过把区位码都加上32,例如汉字“啊”的国标码是48 33(16+32,01+32)。一般用十六进制表示0x3021。...但是这里还有个问题,因为国标码的高、低字节取值范围都是在32-126之间,例如汉字‘徕’在GB2312中的国标码为97 98,而两个英文字母‘ab’的存储码也是97,98。...为避免ASCII码发生冲突,GB2312字符在进行存储时不能按照国标码存储。我们可以发现国标码的二进制最高位都是0,如果我们把每个字节最高位都变为1来存储。...这样在解释编码时,如果一个字节最高位为0,则表示西文字符,否则表示GB2312中字符的一个字节。字节最高位变为1,只需要将国标码每个字节都加上128即可,这个码叫机内码。

68130

python encoding=utf-8_python以utf8打印字符串

但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。...国标码是汉字的国家标准编码,目前主要有GB2312、GBK、GB18030三种。 GB2312编码方案于1980年发布,收录汉字6763个,采用双字节编码。...新版向下兼容旧版,也就是说GBK是在GB2312已有码位基础上增加新码位,GB18030是在GBK已有码位基础上增加新码位,各种编码方案中共有的字符编码相同。...找到了问题,尝试了一下修改方法: 使用国标码编码 df = pd.read_csv('catering_sale.csv', encoding = 'gb2312') 读取时也可以用二进制模式打开的文件...然后使用line.decode(‘gbk’)解码,其中的errors参数: 修改字符集参数,一般这种情况出现得较多是在国标码(GBK)和utf8之间选择出现了问题。

68610

unicode、utf-8、ansi、gbk、gb2312编码详解

unicode、utf-8、ansi、gbk、gb2312编码详解 前言 作为一个开发人员或是测试人员,免不了要与各种各样的编码打交道,而且这些各种编码总是让人头大,现在我们就来揭开他们的庐山真面目 移动还是联通...中国人民看到这样很不错,于是就把这种汉字方案叫做 "GB2312"。GB2312 是对 ASCII 的中文扩 展。 但是,你以为这样就够用了吗?...当然不行,gb2312能够表示很多简体汉字,但是繁体怎么办呢?台湾群众很不满啊,于是也自己搞了一套编码,于是big-5诞生了,你以为这样就完了?...gb2312仅仅可以表示6000多个常用汉字你让其它不常用的怎么办?...于是扩展呗,把之前gb2312中没有利用的位好好利用起来,就成了gbk,这又增加了20000多个汉字,但是咱们少数名族也要用电脑啊,于是有了后来的 GB18030 GB2312和GBK都是用两个字节来编码的

3.7K62

一图弄懂ASCII、GB2312、GBK、GB18030编码

兼容性关系是GB18030兼容GBK,GBK兼容GB2312GB2312兼容ASCII。所谓兼容,你可以简单理解为子集、不冲突的关系。...例如GB2312编码的文件中可以出现ASCII字符,GBK编码的文件中可以出现GB2312和ASCII字符,GB18030编码的文件可以出现GBK、GB2312、ASCII字符。...在GB2312中收录了6763个汉字以及682个特殊符号,已经囊括了生活中最常用的所有汉字。 【3】GBK 由于GB2312只有6763个汉字,我汉语博大精深,只有6763个字怎么够?...于是GBK中在保证不和GB2312、ASCII冲突(即兼容GB2312和ASCII)的前提下,也用每个字占据2bytes的方式又编码了许多汉字。...实际生活中,我们用到的99%以上的汉字,其实都在GB2312那一块区域内。至于GB2312每个编码对应的到底是哪个汉字本文不再赘述,可以参考链接(链接地址)查询。

39.4K153

我知道你不知道GB2312

另一类是ANSI类,最常见的是GB2312/GBK/GB18030三种,他们能很好支持中文,但是面对其它语言可能出现乱码。...现在让我们回到最初提到的那个“仿宋GB2312”的问题,答案一目了然了。首先要明确的是,的确有两种仿宋字体,一种叫做“仿宋GB2312”,另一种叫做“仿宋”。...其中“仿宋GB2312”顾名思义,遵循的是GB2312标准,发布时间早,收录的字数也少;而“仿宋”遵循的是微软自己的GBK标准,发布时间晚、收录字数多,是Windows以及Office的默认字体。...也就是说,如果你想安装“老古董”“仿宋GB2312”,你还得另外去下载,然鹅—— “ 仿宋GB2312竟然TM是很多政府的公文专用字体!!!...有没有发现“仿宋GB2312”要比“仿宋GBK”的字体粗一些?

1.9K30

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb0 in position 53: invalid start byte

FFEF 用于解决大小端问题 UTF-32BOM 为 U+0000FEFF 或 U+0000FFFE 以区分 3 中文编码 注意这里说的中文编码和unicode 编码没有关系 3.1GB2312 GB2312...又称国标码,由国家标准总局发布 GB2312规定“对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示”,习惯上称第一个字节为“高字节”,第二个字节为“低字节”。...GB2312中汉字的编码范围为,第一字节0xB0-0xF7(对应十进制为176-247),第二个字节0xA0-0xFE(对应十进制为160-254)。...3.2 GBK GBK是GB2312的扩展,是向上兼容的,因此GB2312中的汉字的编码与GBK中汉字的相同。另外,GBK中还包含繁体字的编码.

71220

汉字机内码简介及转换工具

例如:有两个字节的内容为30H和21H,它既可表示汉字“啊”的国标码,又可表示西文“0”和“!”的ASCII码。为此,汉字机内码应对国标码加以适当处理和变换。...汉字机内码=汉字国标码+8080H 例如,上述“啊”字的国标码是3021H,其汉字机内码则是B0A1H。 汉字机内码的基础是汉字国标码。...机内码:为了避免ASCII码和国标码同时使用时产生二义性问题,大部分汉字系统都采用将国标码每个字节高位置1作为汉字机内码。...这样既解决了汉字机内码与西文机内码之间的二义性,又使汉字机内码与国标码具有极简单的对应关系。...汉字机内码、国标码和区位码三者之间的关系为:区位码(十进制)的两个字节分别转换为十六进制后加2020H得到对应的国标码;机内码是汉字交换码(国标码)两个字节的最高位分别加1,即汉字交换码(国标码)的两个字节分别加

5K20
领券