【python中的編碼問題】
1、首先要在開頭說明編碼方式為:utf-8
例如:-*- coding: utf-8 -*-
2、如果遇到字符串,立刻轉化為unicode,不要使用str(),直接使用unicode()
unicode_str = unicode(‘中文‘, encoding=‘utf-8‘)
print unicode_str.encode(‘utf-8‘)
3、如果是對於文件操作,打開文件的時候,最好使用codecs.open,替代open
import codecs
codecs.open(‘filename‘, encoding=‘utf8‘)
4、unicode通過encode編碼轉化成str,str通過decode解碼轉化成unicode
舉個栗子:一個utf-8格式的字符串,先被解碼為unicode,這時候不能直接輸出,encode編碼後就可以輸出了
當對字符串進行編碼的時候,會先用默認編碼將自己解碼為unicode,然後再將unicode編碼為你指定的編碼
一些個人理解,一開始的計算機只支持ASCII碼,因為是美國人發明的,所以只支持127個字符;後來為了統一,出現了unicode碼,也叫萬國碼,但是unicode編碼的英文會比ASCII碼多一倍存儲空間,所以就出現了把unicode編碼轉化為可變長編碼的UTF-8編碼方式;在計算機內存中,統一使用unicode編碼,當需要保存到硬盤或者需要傳輸的時候,就轉換為UTF-8編碼。
*****python的字符串類型是str,在內存中以unicode表示,一個字符對應若幹個字節,如果要在網絡上傳輸或者保存到磁盤上,就需要把str變為bytes。
python中,bytes類型的數據用帶b的前綴的單引號或者雙引號表示。以unicode表示的str通過encode()方法可以編碼為指定的bytes。
*****反過來,如果從網絡或者磁盤上讀取了字節流,那麽讀到的數據就是bytes,要把bytes變為str,就要用到decode()方法。
【python中的編碼問題】