encode与decode,unicode与中文乱码的问题

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

posted @ 2016-03-18 18:08  morein2008  阅读(573)  评论(0编辑  收藏  举报