ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

计算机字符编码简单梳理

2022-02-25 12:33:21  阅读:416  来源: 互联网

标签:编码 字符 二进制 区位码 汉字 ASCII 梳理


ASCII

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其西欧语言。

码表如下:

观察表可得出:

  • 0-31和127是控制字符或通信专用字符,例如6号字符ACK用于计算就网络的通信
  • 48-57号字符标识阿拉伯数字0-9,48-57即8为二进制数0011 0000 - 0011 1001,即后四位可看作0-9的8421
  • 65-90号字符为大写字母A-Z,8位二进制数0100 0001 - 01011010,前三位均为010,后五位为1-26的二进制数
  • 97-122号字符为小写字母a-z,8位二进制数0110 0001 - 0111 1010,前三位均为011,后五位为1-26的二进制数

由此规律,若告诉大写X的二进制码为0101 1000,则直接得出小写x的二进制码为0111 1000

GB2312-80

为使中国汉字也可在计算机上表示出来,1980年国家标准局发布了GB2312-80编码

区位码

基本集共收入汉字6763个和非汉字图形字符682个。整个字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,成为区位码。

01-09区收录除汉字外的682个字符

10-15区为空白区,没有使用

16-55区收录3755个一级汉字,按拼音排序

56-87区收录3008个二级汉字。按部首/笔画排序

88-94区为空白区,没有使用

可通过区位码查询自己了解一下

例如:

image-20220225111108308

可得的区位码为4650

国标码

在区位码设计时,为将ASCII码中英文数字之类包含在内,将非中文字符放在了01-09区,可问题是还有32个控制通信字符没有考虑在内

因此,将区码和位码均偏移32位,即都加上20H

那为什么区码和位码都要加20H呢,因为英文采用ASCII码,0-127个字符,即2的7次方个字符,占了7位,最高位补0,满8位位一个字节。例如我向朋友发送字符A,在机器码中则表示为0100 0001。而区位码的存在,使得表示中国汉字需要两个字节,因此,每个字节都要加上20H,给32个特殊字符让出位置

因此的区位码4650(2E32)转化为国标码为4E52(2E+20 32+20)

机内码

在前面提到过,A占一个字节,8位二进制数为0100 0001,最高位0是一个标识,表示这是一个ASCII码

而国内码转化为二进制流后,为避免与ASCII码发生冲突,则将最高位定位1,这样1100 0001就代表着一个GB2312编码,计算机就不是将其判定为ASCII码

因此在国标码的基础上,区码和位码均加上1000 0000即80H

因此的机内码为CED2(4E+80 52+80)

可用Python验证一下:

image-20220225115714900

image-20220225115734224

与我们计算的完全一致!

GBK和UTF-8

随着互联网发展,GB2312编码不能够满足中国字符的表达(中国汉字有上万个),因此在GB2312的基础上,做出了扩展,这里不做深究了。

世界上国家太多了,一个国家一套编码不太现实。这个世界从来都是有需求就有供应。这时候,为拯救你的硬盘和流量,ISO(International Organization for Standardization)国际标准组织就站出来要融合世界所有字符,经过长期的发展,形成了UTF-8编码

UTF-8编码盛行的当下,gb2312和gbk编码亦有着广泛的使用…

标签:编码,字符,二进制,区位码,汉字,ASCII,梳理
来源: https://blog.csdn.net/m0_52038897/article/details/123130263

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有