什么是字符编码呢?
在讲字符编码的之前,我先讲一个东西叫字符集
什么是字符集呢?
python默认的字符集unicode
很简单,就是他把大部分国家的文字,符号,都集合过来,每一个文字或者说是符号都有一个编号去代表
你可以理解成高考
每个考生的准考证号,就代表这个学生
那么字符集也是一样的道理
每个编号就代表这个字符
a = "你"
# 那么它的字符集编号怎么看呢?
print(ord(a))
# 那么我们也可以通过字符集编号,查看它代表的字符
print(chr(20321))
再回过头来讲讲什么是字符编码
在讲字符编码之前,我在讲讲字节,
讲字节之前我在讲讲生活中的例子
你的一个文件的大小,单位是什么?
b,byte,kb,M,G,T
11111111
上面那个二进制数是8位
也就是是8b
换算
1byte (字节) = 8b
1kb = 1024byte
1M = 1024kb
1G = 1024M
1T = 1024G
前面这个就是代表数据的大小
在仔细讲讲字节
一个字节是8位
11111111
那么8位能够代表的数是不是最多可以代表256
也就是说一个字节可以代表256个数
如果一个数就代表一个字的话,那么是不是一个字节就可以代表256个字呢
我们中华文化博大精深对吧
肯定不止256个字啊
所以用两个字节去表示
这个时候两个字节有几种变化呢?
65536
但是我们汉字不止65536对吧
所以我们用三个字节
三个字节的变化就肯定能够包括所有的汉字了,每一种可能就是代表一个汉字
a = "你"
"那么现在用utf-8的编码格式,去把这个汉字换成字节"
print(a.encode("utf-8"))
"b'\xe4\xbd\xa0'"
# 这就是一个16进制的数,只是方便我们看而已,也就是换成10进制,代表的就是228,189,160这几个数组合就代表了你这个字
print(a.encode("gbk"))
# 196 227 两个字节就代表了这个你这个字符
我们传输数据的时候,一个字,是怎么传输的
因为每个字都有一个编号(字符集里面的),然后我们再通过不同的编码格式,把这个编号(转码)转换成字节码(16进制),然后传输的时候,再转换成二进制,也就是电信号啥的,然后到你手机,或者你电脑,再转成字节码(16进制),然后在转成你看见的字(解码)
a = "你"
b = a.encode("utf-8")
print(b)
"下面就是把16进制解码成字符"
c = b.decode("utf-8")
print(c)