python 字節與字符串轉換編解碼格式


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')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM