Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法


Posted in Python onApril 24, 2015

使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 这个问题。 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的。 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,该有的编码都试遍了,可是编译的时候仍然出现: UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position XXX。 崩溃了。

    在windows下面编写python脚本,编码问题很严重。

    将网络数据流写入文件时时,我们会遇到几个编码:

    1: #encoding='XXX' 这里(也就是python文件第一行的内容)的编码是指该python脚本文件本身的编码,无关紧要。只要XXX和文件本身的编码相同就行了。 比如notepad++ "格式"菜单里面里可以设置各种编码,这时需要保证该菜单里设置的编码和encoding XXX相同就行了,不同的话会报错

    2:网络数据流的编码 比如获取网页,那么网络数据流的编码就是网页的编码。需要使用decode解码成unicode编码。

    3:目标文件的编码 要将网络数据流的编码写入到新文件,那么我么需要指定新文件的编码。写文件代码如:

f.write(txt) 

,那么txt是一个字符串,它是通过decode解码过的字符串。关键点就要来了:目标文件的编码是导致标题所指问题的罪魁祸首。如果我们打开一个文件:
f = open("out.html","w") 

,在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就会导致解析不了,出现上述问题。 解决的办法就是,改变目标文件的编码:
f = open("out.html","w",encoding='utf-8') 

。这样,问题将不复存在。
Python 相关文章推荐
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
Python实现登陆文件验证方法
Oct 06 Python
python 生成图形验证码的方法示例
Nov 11 Python
python抖音表白程序源代码
Apr 07 Python
pandas.cut具体使用总结
Jun 24 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
python3访问字典里的值实例方法
Nov 18 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 Python
Python3.x中自定义比较函数
Apr 24 #Python
使用Python脚本将绝对url替换为相对url的教程
Apr 24 #Python
Python3.x版本中新的字符串格式化方法
Apr 24 #Python
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 #Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
Apr 24 #Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 #Python
Python的Tornado框架异步编程入门实例
Apr 24 #Python
You might like
一个用php实现的获取URL信息的类
2007/01/02 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
php中in_array函数用法探究
2014/11/25 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Python内置加密模块用法解析
2019/11/25 Python
大一自我鉴定范文
2013/10/04 职场文书
中职生自荐信
2013/10/13 职场文书
学生会主席演讲稿
2014/04/25 职场文书
体育专业自荐书
2014/05/29 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
2015教师年度考核评语
2015/03/25 职场文书
党委工作总结2015
2015/04/27 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
详解Oracle块修改跟踪功能
2021/11/07 Oracle
Python读写yaml文件
2022/03/20 Python