Python3 中的bytes 与 string之间的转换
Python3 最大的特性是对文本(text)和二进制数据(binary data)做了更清晰的区分
-文本总是unicode, 由Str类型表示
-二进制数据则由bytes类型表示
那什么是Unicode 什么是bytes呢?
-首先计算机存储数据就是以二进制的数据存储的,就是bytes;所以计算机存储文件、视频等,我们必须对其进行编码(encode()),将其转化为bytes再存储
-Unicode是字符集,不是字符编码。Unicode把全世界的字符集都搜集并且编号了,但是没有规定具体的编码规则。编码规则有UTF-8、GBK之类的
Python3 不会以任何隐士的方式混用str和bytes。正是这使得两者的区分特别清晰,你不能凭借字符串和字节包(但是在python2中两者是不区分的,是可以拼接的),也无法在字节包里搜索字符串(反之亦然)。也不能将字符串传入参数为字节包的函数(反之亦然)
相互转换:
将String 转化为bytes首先需要进行编码(encode).而encode是可以使用许多不同的encoding的(即使用不同的编码规则进行编码);将bytes类型转化为String需要进行解码decode,decode也是有许多不同的解码贵族
# coding: UTF-8
msg = "我爱北京天安门"
print(msg.encode()) # 将string转换为二进制
"""再将二进制转换为字符串"""
print(msg.encode().decode()) # 这样就将二进制转为了string 注意UTF-8 为编码规则 Unicode为字符集
注意:
Unicode 和 UTF-8的区别:
Unicode是【字符集】
UTF-8是【编码规则】
其中
-字符集:为每一个【字符】分配一个唯一的ID(学名为码位code point)
-编码规则:将【code point】转换为字节序列的规则(编解码规则)
参考资料:
https://blog.csdn.net/sinat_41104353/article/details/79283619 尊重原创