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程序中操作文件之isatty()方法的使用教程
May 24 Python
django 创建过滤器的实例详解
Aug 14 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
Nov 24 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
python 日志模块 日志等级设置失效的解决方案
May 26 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
python 多进程和协程配合使用写入数据
Oct 30 Python
Python实现的扫码工具居然这么好用!
Jun 07 Python
基于Python实现流星雨效果的绘制
Mar 18 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
PHP编写RESTful接口
2016/02/23 PHP
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
python 判断网络连通的实现方法
2018/04/22 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
python实现飞机大战项目
2020/03/11 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
浅析Python 序列化与反序列化
2020/08/05 Python
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
手机业务员岗位职责
2013/12/13 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
项目合作协议书范本
2014/04/16 职场文书
合作协议书怎么写
2014/04/18 职场文书
春季防火方案
2014/05/10 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
个人工作能力自我评价
2015/03/05 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript