首页 > 技术文章 > 字符编码格式

liuyongbo 2020-08-08 00:40 原文

计算机的世界里都是01那我们是怎么看到计算机给我们显示的字符,图片,甚至视频等的?

  因为01其实是用来表示数字的,那字母,特殊字符这些怎么办呢,计算机岂不是没办法表示了,所以就出现了ASCII码对应表,用数字和字符对应。数字是可以表示为二进制的,这样字符和二进制就可以关联了

  比如说数字0-9字符是用十进制的48-57表示的。我们看到一个数字1就是十进制49也就是二进制110001所以,一个字符1,使用一串0101010之类的二进制表示的

  验证:python中可以用ord('A')来查看字符对应的十进制是多少ord('0')是想知道0这个字符符号对应的数字表示

为什么要用8位二进制来表示字符?

  因为ASCII码最多就表示255个字符,用一个8位的二进制11111111就是255,正好每8位识别为一个字符进行分割,不足8位补0,这样就正好能表示字符且不会出现粘连的情况,计算机好奇妙啊!

  这里就牵扯出了计算机里的最小表示单位,比特,就是每一个0,1所占的位置。

  每8位就是一个字节,字节是最小的存储单位。

各种编码格式

  ASCII码是纯英文使用的编码格式。如果中文用ASCII就会乱码,因为这255个字符对应表中没有中文,计算机是美国人发明的

  于是,俺们国家就发明了GB2312,用16位表示一个中文字符,可以表示6000多个常用的汉字,但是还有很多字表示不了,后面慢慢完善就有了GBK2万多,并且GBK和GB2312是兼容ASCII码表的。也就是说如果一个文件中

中文和英文混合且使用GBK编码,那中文是占2个字节,英文仍然占1个字节,这样来保证文件可以更叫小

编码大战

  同样的,各个国家都发明了自己的编码对应表。导致每个国家都用自己的编码格式,不利于交流,以前下载日本的游戏要装语言包才能显示日文,不然可能会乱码。然后联合国就发明了Unicode码,就像是英语,为通用语言,规定计算机读取到内存中都是用

unicode格式进行编码,传输到硬盘时使用UTF-8编码。

  UTF-8/16/32  -8是使用1,2,3,4个字节表示,按照地区分。-16使用2,4个字节表示,2个表示不了则用4个  -32所有的都用4个字节表示一个字符,最浪费。UTF编码格式是为了解决Unicode可能造成的资源浪费而出现的

  unicode和gbk可以互相转,unicode到硬盘上是utf-8也可以相互转,但是utf-8和gbk是不能互相转的!

推荐阅读