python2和python3編碼
python2編碼
unicode:unicode 你好 u‘\u4f60\u597d‘
| | | |
encode(‘utf8‘)| |decode(‘utf8‘) encode(‘gbk‘)| |decode(‘gbk‘)
| | | |
utf8 gbk
編碼後的str ‘\xe4\xbd\xa0\xe5\xa5\xbd‘ 編碼後的gbk u‘\u6d63\u72b2\u30bd‘
# str: bytes
>>> s = ‘你好 world‘ >>> print repr(s) ‘\xe4\xbd\xa0\xe5\xa5\xbd world‘ >>> print len(s) 12 >>> print type(s) <type ‘str‘>
# unicode:unicode
>>> s = u‘你好 world‘ >>> print repr(s) u‘\u4f60\u597d world‘ >>> print len(s)8 >>> print type(s) <type ‘unicode‘>
#unicode: 無論什麽字符在Unicode都有一個對應。
python2的特點
1.在python2中print把字節轉成了Unicode
2.python2中以默認已ASCII編碼
[root@localhost ~]# cat python.py
#coding:utf8 # 告訴解釋器以utf8編碼
print ‘你好‘
python3編碼
在python3中默認以utf8編碼
str:unicode 你好 u‘\u4f60\u597d‘
| | | |
encode(‘utf8‘)| |decode(‘utf8‘) encode(‘gbk‘)| |decode(‘gbk‘)
| | | |
utf8 gbk
編碼後的str ‘\xe4\xbd\xa0\xe5\xa5\xbd‘ 編碼後的gbk u‘\u6d63\u72b2\u30bd‘
>>> s = ‘你好 world‘ >>> print (json.dumps(s)) "\u4f60\u597d world" >>> print (len(s)) 8 >>> print (type(s)) <class ‘str‘>
編碼解碼方式1:
>>> s = ‘你好 world‘ >>> b = s.encode(‘utf8‘) >>> print (b) b‘\xe4\xbd\xa0\xe5\xa5\xbd world‘ >>> s = b.decode(‘utf8‘) >>> print (s) 你好 world >>> s = b.decode(‘gbk‘) >>> print (s) 浣犲ソ world
編碼解碼方式2:
>>> s = ‘你好 world‘ >>> b = bytes(s,‘gbk‘) >>> print (b) b‘\xc4\xe3\xba\xc3 world‘ >>> s = str(b,‘gbk‘) >>> print (s) 你好 world >>> s = ‘你好 world‘ >>> b = bytes(s,‘utf8‘) >>> print (b) b‘\xe4\xbd\xa0\xe5\xa5\xbd world‘ >>> s = str(b,‘utf8‘) >>> print (s) 你好 world >>> s = str(b,‘gbk‘) >>> print (s) 浣犲ソ world
python2和python3編碼