Python 字元編碼轉換祕訣

pythontab發表於2014-03-20

python 有str object 和 unicode object 兩種字串, 都可以存放字元的位元組編碼,但是他們是不同的type,這一點很重要,也是為什麼會有encode 和decode。

encode 和 decode在pyhton 中的意義可表示為

 encode

unicode -------------------------> str

unicode <--------------------------str

 decode

幾種常用法:

str_string.decode('codec') 是把str_string轉換為unicode_string, codec是源str_string的編碼方式

unicode_string.encode('codec') 是把unicode_string 轉換為str_string,codec是目標str_string的編碼方式

str_string.decode('from_codec').encode('to_codec') 可實現不同編碼的str_string之間的轉換

比如:

>>> t='長城'

>>> t

'\xb3\xa4\xb3\xc7'

>>> t.decode('gb2312').encode('utf-8')

'\xe9\x95\xbf\xe5\x9f\x8e'

str_string.encode('codec') 是先呼叫系統的預設codec去把str_string轉換為unicode_string,然後用encode的引數codec去轉換為最終的str_string. 相當於str_string.decode('sys_codec').encode('codec')。

unicode_string.decode('codec') 基本沒有意義,unicode 在python裡只用一種unicode編碼,UTF16或者UTF32(編譯python時就已經確定),沒有編碼轉換的需要。 

注:預設codec在site-packages下的sitecustomize.py檔案中指定,比如

import sys

sys.setdefaultencoding('utf-8')


相關文章