python乱码解决之decode()与encode()函数与错误显示加解决办法

一、字符串编码常用类型:utf-8,gb2312,cp936,gbk等。

python中,我们使用decode()和encode()来进行解码和编码

在python中,使用unicode类型作为编码的基础类型。即

str ---- ( decode ) -----> unicode ----- ( encode )---->str

u = u'中文' #显示指定unicode类型对象u
str = u.encode('gb2312') #以gb2312编码对unicode对像进行编码
str1 = u.encode('gbk') #以gbk编码对unicode对像进行编码
str2 = u.encode('utf-8') #以utf-8编码对unicode对像进行编码
u1 = str.decode('gb2312')#以gb2312编码对字符串str进行解码,以获取unicode
u2 = str.decode('utf-8')#如果以utf-8的编码对str进行解码得到的结果,将无法还原原来的unicode类型

借鉴:https://www.cnblogs.com/evening/archive/2012/04/19/2457440.html

二、 python2.7运行出现的Unicode equal comparison failed to convert both arguments to Unicode - interpreting

错误原因:
uncode编码警告:在unicode等价比较中,把两个参数同时转换为unicode编码失败。中断并认为他们不相等。
这是由于编码解码不统一造成的坑
我们在脚本中统一指定编码

python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报错UnicodeDecodeError:
‘ascii’ codec can’t decode byte 0x?? in position 1: ordinal not in
range(128),python没办法处理非ascii编码的,此时需要自己设置python的默认编码,一般设置为utf8的编码格式。

在程序中加入以下代码:即可将编码设置为utf8

import sys
reload(sys)
sys.setdefaultencoding('utf8')

三、数据库插入又有乱码,这是因为我的数据源与数据库表的编码方式不同,我们再转换一下

'idc': ip_info['idc'].encode("utf-8"),
//出现编码错误的地方直接用encode()函数重新编码就好了。

你可能感兴趣的:(python)