前言

程序中的编码问题你不搞明白,那么你的程序生涯中它会像幽灵一样伴随着你的职业生涯。

首先要搞清楚一个概念:计算机中认识什么?它认识的是010101这种二进制,却不认识中文不认识英文
那么,这个时候问题来了,我们写的英文,写的汉字是怎么转变成机器识别的010101的二进制的数字的呢?

ascii码闪亮登场

0000 0001 8位(bit) == 1个字节(byte)

1024byte == 1KB

1024KB == 1MB

1024MB == 1GB

1024GB == 1TB

1024TB == 1PB

Python基础之初始编码-LMLPHP

在最初设计ascii码之初,设计者并没有想到有一天计算机会被全世界应用的如此广泛,所以它们只设定了
7位的0000001数字去映射一个英文,每一位都是01两种可能,共2的7次方128种可能,但是预留了一位 0 以备不时之需
所以8位代表一个字节,但是让它不是黄种人的码,他解译不了中文

中文大概有9W多个字,2的16次方也仅仅才6w多,还是包含不了全部的中文,为了解决这个全球化的问题,老美创建了一
个万国码unicode

unicode

1个字节8位代表256种可能,表示所有的英文,特殊字符,数字等等
最开始给了中国2个字节,8位代表一个字节,那么2的16次方6W多种可能也是包含不够
4个字节 2的32次方 代表一个中文字体 包含了全世界的可能,有点浪费了,为了解决这个
问题,utf-8 闪亮登场

utf-8

3个字节2的16次方种可能 代替一个中文

GBK(仅限国内使用,里面全是中文的映射)

2个字节2的8次方种可能 代表一个中文(但是还是包含不够所有的中文)

05-11 22:28