Python中decode與encode的區別


摘抄:
字符串在Python內部的表示是Unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。
decode的作用是將其他編碼的字符轉換成unicode編碼,如str1,decode('gb2312'),表示將gb2312編碼的字符串str1轉換成unicode編碼。
encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2,encode('gb2312'),表示將unicode編碼的字符串str2轉換成gb2312編碼。
 
因此,轉碼的時候一定要明白,字符串str是什么編碼,然后decode成unicode編碼,然后再encode成其他編碼。
 
通常,在沒有指定特定的編碼方式時,都是使用的系統默認編碼創建的代碼文件。
如:
    s = '中文'
    在utf8文件中,該字符串就是utf8編碼了;
    在gb2312文件中,該字符串就是gb2312編碼了;
    如字符串是這樣定義: s =u'中文',則該字符串的編碼就被指定為unicode編碼了,即Python的內部編碼,而與代碼文件本身的編碼無關,因此,對於這種情況做編碼轉換,只需直接使用encode
    方法將其轉換成指定編碼即可。
 
如果一個字符串已經是unicode了,再進行解碼則將出錯,因此通常要對其編碼方式是否為unicode進行判斷:
 
isinstance(s,unicode)    # 用來判斷是否為unicode
 
------->> 用非unicode編碼形式的str來encode會報錯
 
--如何獲得系統的默認編碼:
# !/usr/bin/env python #coding=utf-8 import sys print sys.getdefaultencoding()
    


免責聲明!

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



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