python编码问题的总结

如出现:

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/文本编辑器, 文件编码,数据库数据表编码

保证代码源文件编码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值