1、如果沒有設置字符串編碼格式,那么將采用系統默認編碼格式
name = 'laogaoyang' # 采用系統默認編碼格式 nameBytes = name.encode('utf-8') # 先將 name 解碼(采用系統默認格式),然后用 'utf-8' 編碼 nameStr = nameBytes.decode('utf-8') # 用什么格式編碼就需要用同樣格式去解碼,否則出錯
說明:
name.encode('utf-8') 此處將 name 重新編碼為 'utf-8',要重新編碼首先要解碼,此處並沒有指明解碼方式,那么將采用系統的默認解碼格式(編解碼格式相同,不會出錯)
2、主動設置字符串編碼格式為 'utf-8',假設系統編解碼格式為 'ascii'
# -*- coding: utf-8 -*- name = 'laogaoyang' # 采用指定的編碼格式 'utf-8' nameBytes = name.encode('utf-8') # 這里出錯了
說明:
上一個例子編碼成 'utf-8' 是正常的,因為編解碼格式相同
此處編碼采用 'utf-8'格式,並沒有指明解碼方式,那么將采用系統的默認解碼格式(即 'ascii', 編解碼格式不相同,出錯),修正方法有兩種,如下所示
明確指定解碼格式 # -*- coding: utf-8 -*- name = 'laogaoyang' # 采用指定的編碼格式為 'utf-8' nameBytes = name.decode('utf-8').encode('utf-8')
修改默認解碼格式 # -*- coding: utf-8 -*- import sys sys.setdefaultencoding('utf-8') name = 'laogaoyang' # 采用指定的編碼格式 'utf-8' nameBytes = name.encode('utf-8')