學習使用編碼和解碼

目的:在處理字符時,如果編碼和解碼處理不當,就會出現亂碼。


環境:ubuntu 16.04   python 3.5.2


情景:因爲工作,需要寫了一個自動接收郵件並針對特定內容導出到表格的腳本,但收到的郵件源信息一般都是字節信息,需要解碼處理,即decode, 如果要發送郵件就需要使用編碼encode。


函數:

str.decode('解碼方式')

str.encode('編碼方式')

這裏decode接收字符串,並以指定的解碼方式解碼,如utf-8或gb2312,encode也是相同的操作。如果給的編碼或解碼方式錯誤,則會彈出UnicodeDecodeError:錯誤,可以用try---except來捕捉處理。


以下:

def decode_str(_str):
    try:
        _change_str = _str.decode('gb2312')
    except UnicodeDecodeError:
        _change_str = _str.decode('utf-8')

一般微軟中文操作系統都是gb2312的。


再寫一點枯燥的筆記:

字符編碼,早期有美國人發明,定製了ASCII編碼,只包含大小寫字母、數字和一些符號,這樣對其他語言的支持明顯不夠,中文一般需要兩個字節,且不能與ASCII衝突,所以定製了GB2312用於中文,其他國家也有自己的編碼,爲了統一,Unicode應運而生,包含了所以不同的編碼,但是在表示ACSII字符是多加了空的字節,浪費存儲和傳輸,於是有了UTF-8,常見英文用一個字節,漢字通常用3個(Unicode用2個),兼容ASCII。現在傳輸和存儲用UTF-8,內存和服務用Unicode。



參看資料:

第三方博客




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章