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多进程分块读取超大文件的方法
Apr 13 Python
python实现自动发送报警监控邮件
Jun 21 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
pycharm修改file type方式
Nov 19 Python
Python-opencv 双线性插值实例
Jan 17 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Python函数生成器原理及使用详解
Mar 12 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
Apr 01 Python
opencv 查找连通区域 最大面积实例
Jun 04 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
Jupyter Notebook安装及使用方法解析
Nov 12 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
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
js控制input输入字符解析
2013/12/27 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
微信小程序实现换肤功能
2018/03/14 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
Python模块学习 filecmp 文件比较
2012/08/27 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
python处理xml文件的方法小结
2017/05/02 Python
python处理按钮消息的实例详解
2017/07/11 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
Python文件操作的面试题
2013/06/22 面试题
大学生毕业自我鉴定
2013/11/06 职场文书
清洁工岗位职责
2014/01/29 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
2014年信用社工作总结
2014/11/25 职场文书
音乐教师个人总结
2015/02/06 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
幼儿园教师求职信
2015/03/20 职场文书
贷款工资证明范本
2015/06/12 职场文书
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS