Python字符串的編碼與解碼(encode與decode)


首先要搞清楚,字符串在Python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

decode的作用是將其他編碼的字符串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字符串轉換成unicode編碼。

encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2.encode('gb2312'),表示將unicode編碼的字符串轉換成gb2312編碼。

在某些IDE中,字符串的輸出總是出現亂碼,甚至錯誤,其實是由於IDE的結果輸出控制台自身不能顯示字符串的編碼,而不是程序本身的問題。

例如:ljq.py,編碼為utf8,包含內容如下:

#-*-coding:utf-8-*- 

s='中文'
print type(s) #查看s的字符類型
print s  

s.decode('utf8') #解碼utf8,默認的編碼方式是unicode
s.decode('gbk', "ignore") #解碼utf8,忽略其中有異常的編碼,僅顯示有效的編碼
s.decode('gbk', 'replace')
print type(s)
print s

s.encode('gb2312') ##編碼為utf8
print type(s)
print s

ljq.py編碼必需與s.decode('utf8')指定的編碼一致,不然會拋出解碼異常信息,可以通過s.decode("gbk", "ignore")或s.decode("gbk", "replace")來解決。

另外對於一些包含特殊字符的編碼,直接解碼可能會報錯,可以使用對於的參數來設置。如:
s.decode("utf-8", "ignore") 忽略其中有異常的編碼,僅顯示有效的編碼
s.decode("utf-8", "replace") 替換其中異常的編碼,這個相對來可能一眼就知道那些字符編碼出問題了。

從unicode轉str,被看做是把一個信息文本編碼為二進制字節流的過程,要用encode方法


免責聲明!

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



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