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)

  

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM