计算机中ASCII 码怎么理解? 您所在的位置:网站首页 ascii码的大小关系 计算机中ASCII 码怎么理解?

计算机中ASCII 码怎么理解?

2023-03-22 04:13| 来源: 网络整理| 查看: 265

引言

想必大家之前一定 会被字符编码困惑。ASCII,GB2312,Unicode,GB18030等等,或者说大家遇到过文件乱码问题。那么这一系列的编码到底是什么?他们之间又会有什么区别?又为什么产生乱码问题?

1.背景

大家应该知道,我们现在的计算机都是二进制,在通俗的来讲,就是01构成!那么问题来了。我们人类交流的主要方式是语言,而语言往往是由大量的符号构成的,所以很自然的就会想到使用二进制编码,对应到指定的符号,即一个唯一的编码对应一个唯一的符号。在这里说两个概念;

字符集:一堆符号的集合,里面包含了符号,文字,图形符号,数字,甚至可以是表情包。(对于人的字符集合) 字符编码:一套规则。使一个二进制代码对应到一个符号的规则。一串00101010的代码,规则A就可以把他读成:0010 1010(读取两次),而规则B就把他读成:”00101010“

细心的读者可能有所发现,没错,上面的那些ASCII等,都有自己的字符集和字符编码,其中字符编码就一一对应自己字符集内的所有内容

2.ASCII

当初计算机是在美国流行起来的,所以当他们考虑计算机显示文字的问题时,想到的肯定只有字母。于是乎,ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)编码便呼之欲出。

下图便是ASCII表(数字代码和符号的对应关系)

具体规则

在ASCII中规定:一个字节所对应一个符号。在计算机中,一个字节包含8位,一个字节所能表示的不同状态也只有:256个(

)>) 。就像上图:符号A,所对应的数字编码为:0100 0001。

但是需要注意的是在ASCII字符集中,只有128个符号,因此ASCII内,128的对应关系。其中前32个符号,是非显示字符(计算机显示)。

随着计算机的发展到欧洲,由于欧洲人们也有着自己的语言,于是就对ASCII进行了拓展,把剩下的128个也建立了对应关系,来表示欧洲地区的字符,并命名为:EASCII

3.非ASCII编码3.1GBXXXX字符集&编码

聪明的各位可能就就要问了,欧洲,美洲都把256个对应关系都用光了,我们大中国怎么办?我们博大精深的文字如何表示?此时此刻,GBXXXX字符集&编码就诞生了!(这里的X仅代表数字)。

GB开头的就是我们中国的字符编码。GB就是国标的首字母大写。下面的图是2312的对应规则。

具体规则:

在GB2312中规定:两个字节所对应一个符号。

Q:为什么ASCII一个字节表示,而GB2312用两个符号表示?

A:亲,因为咱们的字多呀!两个字节可以有65536个对应状态(

3.2Unicode编码

可能又要有人问了,不同国家的字符编码不同,那么如何保证信息的准确性?如果我在中国写好的文档,跑到美国去,那我的文档岂不是要乱了?其实在Unicode没有出世之前的确是这个样子的。随着互联网的出现,全世界的人们都在用自己的语言去共享着信息,如果所使用编码不统一,势必会产生乱码的情况的。

那么只有一个解决方式:将世界上所有的文字都去遵循同一种编码方式。这个方法看样子是不是很难实现?但是他已经被Unicode去实现了,所以Unicode是一个很伟大的编码方式;

Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

说人话就是:将世界上所有的符号都纳入其中,并且都有与之对应的关系;

(最新的Unicode14.0编码规范要在2021年3月发布,由于疫情故推迟到2021年9月发表。)

3.3 UTF-8编码

在Unicode值得注意的是:Unicode仅仅规范了符号的编码方式,但是对于存储的方式并没有对此说明。

因为有的符号仅需要一个字节,有的需要多个字节。比如,汉字严的 Unicode 是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说,这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。如果全都以:四个字节去存储,由于较小值的编码点一般使用频率较高,直接使用Unicode编码效率低下,大量浪费内存空间。UTF-8就是来解决这个问题的。即解决Unicode存储问题。(后面的8就是以8位为单元进行编码)

UTF-8的编码规范:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。 2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

4.结束

至此,计算机表示语言的方式(即编码规范)基本大势已定,绝大多数都是Unicode编码,UTF-8存储。从此以后互联时代得到了飞速发展。全世界人们尽管语言不同,但是表示语言的方式完全统一!使得全球互联,世界互惠,人们互通!故此致敬各位前辈在字符编码上所付出的努力!

参考文献:

ASCII,Unicode 和 UTF-8 By阮一峰的网络日志

UTF-8 By维基百科

字符集和字符编码 By吴秦



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有