计算机的世界里都是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是不能互相转的!
原文:https://www.cnblogs.com/liuyongbo/p/13456080.html