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
错误原因:
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()函数重新编码就好了。