python中的字符编码和str与bytes类型转换
从某种意义上说,Python中只有两种数据类型:str和bytes。
从str转换成bytes,称为编码
从bytes转换为str,称为解码
str是以Unicode方式编码的
byte可以以utf8或者gbk等形式编码
一、str转bytes(编码)
方法一:通过bytes()方法
s = 'hello世界' b = bytes(s, 'utf8')
在utf8中,一个汉字占三个字节
print(b) # b是utf8编码的bytes
上边代码执行结果如图:
方法二:通过str的内置函数encode()
b2 = s.encode('utf8') print(b2)
二、bytes转str(解码)
方法一:用str()方法
s = str(b2, 'gbk') print(s) # 会出现汉字乱码
乱码原因:
b2是用utf8编码成bytes的,必须用utf8解码成str
str数据类型没有编码规则,是Unicode(万国码)
方法二:用bytes的内置函数decode()
s2 = b2.decode('utf8') print(s2)
用什么格式编码,就要用什么格式解码
如果这篇文章帮助到了你,你可以请作者喝一杯咖啡