1. 程式人生 > >python2和python3編碼

python2和python3編碼

spa cal str -s span utf8編碼 odin post bytes

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編碼