標籤:讀取 首碼 unicode編碼 encoding 就是 替代 檔案的 codec 記憶體
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中的編碼問題】