默認編碼:
字符不等於字節:字符是人類能夠識別的符號,而這些符號要保存到計算的存儲中就需要用計算機能夠識別的字節(二進制編碼)來表示,其中的文本文件都是以某種特定編碼的字節形式存放的:
- Python2默認編碼爲’ascii’,而Python3默認編碼爲’utf-8’
- (utf-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼,用1到6個字節編碼Unicode字符.)
- 爲了兼容Python2和Python3,建議在代碼頭部聲明字符編碼:-- coding:utf-8 --
查看Python3的默認編碼,命令如下:
>>>import sys
>>>sys.getdefaultencoding()
'utf-8'
數據類型:
Python中的數據類型有以下三種:
- 字符串(如,‘12345’)
- 字節串(如,b’12345’)
- 數字(如,12345)
utf-8使用三個字節來表示漢字,如:
>>> u'漢'.encode('uft-8')
b'\xe6\xb1\x89'
utf-8兼容ascii,由於十六進制的前128(0x00~0x80)個數與ASCII是一一對應的關係,所以在python中,表示字節串的時候將會出現16進制與ASCII碼混合出現的情況。如:
>>> b'\x25\x90\x52'
b'%\x90R'
>>> [ hex(x) for x in b'%\x90R' ]
['0x25', '0x90', '0x52']
Python默認以十進制進行顯示和運算,比如:
>>> 0b10 #用二進制表示的數字
2
>>> 0o10 #用八進制表示的數字
8
>>> 0x10 #用十六進制表示的數字
16
>>> 0b10 + 0o10 + 0x10
26
字節串轉數字需要用到struct模塊:
>>>import struct
>>>struct.unpack('<H', b'\x00\x29')
(10496,)