windows中國中通常使用GBKpython
其中ASCII碼在存儲是佔一個字符,但只能支持英文windows
unicode支持中文和英文,可是在存儲英文是須要佔用2個字符,所以爲了解決中文的問題,拓展出了utf-8(中文3個字符,英文1個字符)python2.7
python3默認使用的是unicode編碼編碼
python2默認使用ASCII編碼spa
python2.7 和python3+ 有很大的區別:code
其中python2編碼encode後只改變字符串的編碼,python3編碼encode後不僅是改變字符的編碼,字符的格式也會改變,會變成byte格式blog
python2:utf-8
1 [yangdong@hd04 ~]$ cat test.py 2 #-*- coding:utf-8 -*- #生命當前文本使用utf-8的編碼格式 3 import sys 4 print (sys.getdefaultencoding()) #獲取當前環境默認編碼格式 5 s = "你好" 6 s_to_unicode=s.decode("utf-8") 7 print(s_to_unicode,type(s_to_unicode)) 8 s_to_gbk = s.decode("utf-8").encode("gbk") 9 print(s_to_gbk) 10 [yangdong@hd04 ~]$ python test.py 11 ascii 12 (u'\u4f60\u597d', <type 'unicode'>) 13 ţº
python3:ci
1 #-*-coding:utf-8-*- 2 import sys 3 print(sys.getdefaultencoding()) 4 5 s = "你好" 6 s_to_gbk=s.encode("gbk") 7 print(s_to_gbk,type(s_to_gbk)) 8 9 10 11 運行結果: 12 utf-8 13 b'\xc4\xe3\xba\xc3' <class 'bytes'>
由上能夠看出當python3更改字符的編碼是,輸出的結果再也不是字符串了,而是bytes類型unicode
任何格式的編碼在相互變換時,只須要圍繞這unicode進行轉換就能夠。