字符集
字符集, 记住两个字符集就够了。一个是utf-8,一个是gbk。都是支持中文的。但是utf-8的编码数量远大于gbk。我们平时使用的最多的是utf-8。
数据想要进行传输或者存储, 需要对数据进行处理。处理的过程叫做序列化。在运行时时要消耗内存的,在内存中使用的是unicode编码,传输的时候使用 gbk 或者 utf-8
gbk:中国人的编码,一个中国汉字 -> 2个字节
utf-8 可变长度的unicode,一个中国汉字 --> 3个字节
gbk和utf-8是不能直接转换的
从网页里拿到的字节如果是gbk, 那么你需要用gbk来处理。如果是utf-8,需要使用utf-8来处理
encode() 编码 -> 把字符串转换为字节
decode() 解码 -> 把字节转换成字符串
unicode -> 内存的编码
gbk -> 中国人的编码
utf-8 -> 全世界的编码
# 转化成gbk
bs = s.encode("gbk")
print(bs)
# b'\xce\xd2\xca\xc7\xd3\xee' /x后面跟着两位的就是一个字节
# 3个中文对应6个字节,正好6个\x
# 转化为utf-8
bs2 = s.encode("utf-8")
print(bs2)
# b'\xe6\x88\x91\xe6\x98\xaf\xe5\xae\x87' 3个中文,9个字节
# 如何将字节转化回字符串
bs3 = b'\xce\xd2\xca\xc7\xd3\xee'
s = bs.decode("gbk")
print(s)
以后需要编码的时候,可以尝试用utf-8,如果utf-8可以,就用utf-8 (穷举法,瞎蒙)
或者 查看<meta charset="UTF-8"> 里面写的是啥就用啥,但是有的时候有坑
在网页端,你能看到它用什么编码的,适用于大部分网站。如果网页上写的是utf-8,但是不可用,换gbk试试
如果都不行,按照网页上的编码进行以下操作
s = "网页上的字符"
s = s.encode("gkb", "ignore").decode("gbk", "ignore")
大部分情况下那utf-8和gbk已经处理完了,但是print有问题,在控制台当中有些东西打不出来,不被控制台所接受
所以将打印的东西变成他可以处理的东西。干掉所以不符合console编码的字符
但是这样处理不好,会破坏原有的数据
bytes
记住, bytes不是给人看的. 是给机器看的. 我们遇到的所有文字, 图片, 音频, 视频. 所有所有的东西到了计算机里都是字节.
这些数据本身只能是字节,没有办法处理成字符串
网友评论