環(huán)境: Centos7 + Python3.5.4
1.在Python中也存在字節(jié)型數據(bytes)和字符型數據(unicode)酵熙,不過這兩者在Python2和Python3中卻有點不同驰坊。
Py2 和 Py3 都用 str 類型來表示字符串,不過在Py2中假勿,str跟bytes是等價的态鳖;在Py3中,str跟unicode是等價的浸须。另外邦泄,值得注意的是顺囊,在Py2中,bytes跟unicode是等價的特碳;在Py3中則是不等的晕换。詳情見下圖或者在Python命令行嘗試闸准。
Python2
Python3
2.字節(jié)型轉換為字符型可以理解為解碼(decode)夷家,反之則是編碼(encode)敏释。下面只展示Python3的情況
首先,我們可以通過 locale 來查看本機的默認編碼方式缺谴,貌似Linux默認是utf-8耳鸯,windows默認是gbk。
>>>import locale
>>>locale.getpreferredencoding(False)
其次阳啥,我們將嘗試 字符->字節(jié)
>>>a = '學習'
>>>ae = a.encode('utf-8')
b'\xe5\xad\xa6\xe4\xb9\xa0'
字節(jié)->字符
>>> 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'