如出现:
UnicodeEncodeError: 'Gbk' Codec Can't Encode Character '\xa0' in Position 111: Illegal Multibyte Sequence`
编码的问题
cmd终端显示乱码报错问题
编码问题的根本解决方法都是统一编码
两方面解决:
1、让终端的编码与文本输出的编码一致
1. 运行CMD;
2. 输入 CHCP,回车查看当前的编码;
3. 输入CHCP 65001,回车;
2、让文本输出的编码与终端的一致
html = contect.decode('utf-8').encode('gbk')
但往往会有无法编码的字符出现
可能会想到用用 ‘’ 来替换 ‘\xa0’ ( ):
print(text.replace(u'\xa0 ', u' '))
但这总方法不太好,因为字段中不只'\xa0 '一个无法编码的字符
应该用此方法,见于《流畅的python》 4.4.1处理UnicodeEncodeError
#error='ignore' 处理方式悄无声息地跳过无法编码的字符;这样做通常很是不妥。
city.encode('cp437', errors='ignore')
#编码时指定 error='replace',把无法编码的字符替换成 '?';数据损坏了,但是用户知道出了问题。
city.encode('cp437', errors='replace')
#'xmlcharrefreplace' 把无法编码的字符替换成 XML 实体。
city.encode('cp437', errors='xmlcharrefreplace')
另外注意:
写入或读取文件时引发的UnicodeEncodeError:
注意要指定文本相应的编码,
f = open('log.txt','a',encoding='UTF-8')
总结:
统一编码,防止由于某个环节产生的乱码
环境编码,IDE/文本编辑器, 文件编码,数据库数据表编码
保证代码源文件编码