encode是指将unicode字符编码成其他字符集的字符,如utf-8,ascii等;
而decode是指将其他字符编码,如utf-8转换成unicode编码。
encode是指将人类用的语言(字符串)编码为机器能识别的语言(字节码),decode反之。
【简单来说编码就是把人类通用的语言符号翻译成计算机通用的对象,而反向的翻译过程自然就是解码了。Python 中的字符串类型代表人类通用的语言符号,因此字符串类型有encode()
方法;而字节类型代表计算机通用的对象(二进制数据),因此字节类型有decode()
方法。】
引自:http://python.jobbole.com/84840/
其中还包含更多关于字符集的解释,和类似'ascii' codec can't encode character '\u96e8' in position 0..的错误解决方法
python中可以用isinstance函数来判断某个字符串是否是unicode:
s=u"中文"
isinstance(s, unicode) #用来判断是否为unicode
给出一段处理字符串编码的通用代码:
if isinstance(s, unicode):
s=s.encode('utf-8')
#如果当前是unicode,就直接编码成utf-8
print 'encoded'
else:
s=s.decode('gb2312').encode('utf-8')
#否则,已知当前是gb2312字符集,先将其解码成unicode,再按照utf-8编码
print 'decoded and encoded'
引自http://www.blog.chinaunix.net/uid-25063573-id-3033365.html