Fork me on GitHub

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)

  

用什么格式编码,就要用什么格式解码

posted @ 2021-01-06 11:22  stardsd  阅读(730)  评论(0编辑  收藏  举报