环境: Centos7 + Python3.5.4
1.在Python中也存在字节型数据(bytes)和字符型数据(unicode),不过这两者在Python2和Python3中却有点不同。
Py2 和 Py3 都用 str 类型来表示字符串,不过在Py2中,str跟bytes是等价的;在Py3中,str跟unicode是等价的。另外,值得注意的是,在Py2中,bytes跟unicode是等价的;在Py3中则是不等的。详情见下图或者在Python命令行尝试。
Python2
image
Python3
image
2.字节型转换为字符型可以理解为解码(decode),反之则是编码(encode)。下面只展示Python3的情况
首先,我们可以通过 locale 来查看本机的默认编码方式,貌似Linux默认是utf-8,windows默认是gbk。
>>>import locale
>>>locale.getpreferredencoding(False)
其次,我们将尝试 字符->字节
>>>a = '学习'
>>>ae = a.encode('utf-8')
b'\xe5\xad\xa6\xe4\xb9\xa0'
字节->字符
>>> ae.decode('utf-8')
'学习'
最后,因为在Py3中,字符串与unicode是等价的,所以字符串是没有decode方法的,如果调用该方法则会报错
>>> a.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode'
网友评论