在 3.x 中,字符串和二进制数据完全区分开。文本总是 Unicode,由 str 类型表示,二进制数据则由 bytes 类型表示。Python 3 不会以任意隐式的方式混用 str 和 bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。
bytes 类型与 str 类型,二者的方法仅有 encode() 和 decode() 不同。
bytes 类型数据需在常规的 str 类型前加个 b 以示区分,例如 b'abc'。
只有在需要将 str 编码(encode)成 bytes 的时候,比如:通过网络传输数据;或者需要将 bytes 解码(decode)成 str 的时候,我们才会关注 str 和 bytes 的区别。
bytes 转 str:
b'abc'.decode()
str(b'abc')
str(b'abc', encoding='utf-8')
str 转 bytes:
'中国'.encode()
bytes('中国', encoding='utf-8')
str->bytes:encode编码
bytes->str:decode解码