1、编码与解码介绍
位:计算机最小的单位 二进制中的一位 用二进制的 0/1表示。
字节:八位组成一个字节。
字符:我们肉眼可见的文字与符号。
字符集:字符的集合。
编码:将字符转换成计算机可识别的0/1代码。
解码:将计算机表示的0/1编码转换成肉眼可见的字符。
2、GBK、GB2312与UTF8之间的转换
GBK、GB2312等和UTF8之间都必须通过Unicode编码才能相互转换:
1、GBK、GB2312--Unicode--UTF8
2、UTF8--Unicode--GBK、GB2312
3、GBK,GB2312以及Unicode都既是字符集,也是编码方式,而UTF-8只是编码方式,并不是字符集。
4、GBK编码中英文字符只占一个字节。
字符串通过编码转换为字节码 str--->(encode)--->bytes
字节码通过解码转换为字符串 bytes--->(decode)--->str
3、编码 encode()
把字符转化为计算机可以识别的字节码
str --->(encode)--->bytes
name1 = "汤姆"
name2 = name1.encode('gbk')
name3 = name1.encode('utf-8')
name4 = name1.encode('GB2312')
print("编码:", name2)
print("编码:", name3)
print("编码:", name4)
# 输出:
# 编码: b'\xcc\xc0\xc4\xb7'
# 编码: b'\xe6\xb1\xa4\xe5\xa7\x86'
# 编码: b'\xcc\xc0\xc4\xb7'
4、解码 decode()
把计算机可识别的的字节码转化为字符
bytes--->(decode)--->str
注意:用什么编码方式就要用什么解码方法,否则会报错 UnicodeDecodeError
name2_1 = name2.decode("gbk")
name3_1 = name3.decode("utf-8")
name4_1 = name4.decode("GB2312")
print("解码:", name2_1)
print("解码:", name3_1)
print("解码:", name4_1)
# 输出:
# 解码: 汤姆
# 解码: 汤姆
# 解码: 汤姆