首页
学习
活动
专区
圈层
工具
发布

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

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

6.3K20

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

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

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

    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.7K20

    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之间选择出现了问题。

    1.1K10

    《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即可,这个码叫机内码。

    86630

    基于Logisim的汉字显示模拟实验

    上个实验主要是设计的这个加法器,并行加法器和串行加法器,我就没发,这个实验遇到了很多的问题,也总结了很多的技巧,所以就总结记录一下,希望对大家有所帮助; 2.实验的内容和目的 设计这个数码之间的转换(区位码和国标码...,其他的我不确定); 第一个适合一个字一个字的,因为它是单个显示的,第二个链接适合一段话展示的,因为他的这个编码是一起显示的,可以直接复制粘贴,很方便; 查看字符编码(简体中文) ASCII/GBK/GB2312...下面的这个就是第二个链接,直接输入文字,点击字转码即可,下面的这个编码的方式,输出方式和强制全角和我的保持一致就可以了,一般这个都是默认的; 接下来的这个很重要:这个我是在一个视频里面学到的,我们需要把这个GB2312...这个时候软件就会按照我们刚才修改的编码进行读取,现实对应的汉字; 如果想要重开:点击重置模拟器即可; 如果显示的汉字不对,有两个原因: 1)编码不对(要么是转换的不对,要么是没有更新成功); 2)加法器不对,就是我们的国标码转换为区位码的这个加法器的设计有问题

    23610

    C++代码改造为UTF-8编码问题的总结

    本地码的意思就是基于当前系统区域设置的字符编码,以国内大陆的来说就是国标码:GB2312/GBK/GB18030。...ANSI编码是本地编码,在国内的Windows环境中通常指国标码(国家标准标码),更加具体一点就是GB2312、GBK和GB18030这三种编码。...其中,GB2312编码是第一版国标码,GBK编码最常用,但是GB18030编码是最新的。...国标码最初被设计出来的时候,是2个字节对应于1个字符,同时没有占用ASCII编码的内容,因此是兼容ANSI编码的。...UTF-8变长编码的思想也影响了国标码的设计,最新的国标码GB18030编码也扩展成为了变长编码,并且兼容ASCII字符的单字节编码,以及GB2312和GBK的双字节编码部分。

    74210

    基于Logisim的汉字显示实验报告

    上个实验主要是设计的这个加法器,并行加法器和串行加法器,我就没发,这个实验遇到了很多的问题,也总结了很多的技巧,所以就总结记录一下,希望对大家有所帮助;2.实验的内容和目的设计这个数码之间的转换(区位码和国标码...这个我可以保证没问题,其他的我不确定);第一个适合一个字一个字的,因为它是单个显示的,第二个链接适合一段话展示的,因为他的这个编码是一起显示的,可以直接复制粘贴,很方便;查看字符编码(简体中文)ASCII/GBK/GB2312...编码在线查询软件下面的这个就是第二个链接,直接输入文字,点击字转码即可,下面的这个编码的方式,输出方式和强制全角和我的保持一致就可以了,一般这个都是默认的;接下来的这个很重要:这个我是在一个视频里面学到的,我们需要把这个GB2312...这个时候软件就会按照我们刚才修改的编码进行读取,现实对应的汉字;如果想要重开:点击重置模拟器即可;如果显示的汉字不对,有两个原因:1)编码不对(要么是转换的不对,要么是没有更新成功);2)加法器不对,就是我们的国标码转换为区位码的这个加法器的设计有问题

    28710

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

    兼容性关系是GB18030兼容GBK,GBK兼容GB2312,GB2312兼容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每个编码对应的到底是哪个汉字本文不再赘述,可以参考链接(链接地址)查询。

    51.1K165

    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都是用两个字节来编码的

    11.2K83

    我知道你不知道GB2312

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

    2.3K30

    揭开仿宋和仿宋_GB2312的神秘面纱

    GB2312 我们经常看到的GB2312,指的是国家汉字的编码标准,跟字体没关系,它只规定了计算机里可显示的中文字符,至于这些字符显示出来是仿宋,还是楷体、黑体、宋体、花体,和它毫无关系。...仿宋_GB2312 仿宋_GB2312字体在中国公文中的应用具有深远的历史和广泛的影响。它不仅仅是一种字体,更是国家公文规范化、标准化进程的重要标志之一。...但是在使用"仿宋_GB2312"格式化目标文字的字体的时候,很多文字并没有被"仿宋_GB2312"收录在自己的字符集里,导致了出现了不少字符无法被格式化,例如"骉"、"犇"、"麤"等。...但同时,"仿宋"比"仿宋_GB2312"所占内存更多,因为"仿宋"所包含的字符集的数量大大增强了。...此外,"仿宋"在字形外观上和"仿宋_GB2312"有所不同, 但是,由于种种历史原因,已经过时的"仿宋_GB2312"直到今天仍在公文中广泛使用,但仿宋_GB2312确实已经过时了。

    3.6K10
    领券