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实现在目录中查找指定文件的方法
Nov 11 Python
Python3.x中自定义比较函数
Apr 24 Python
详解python3实现的web端json通信协议
Dec 29 Python
使用python获取csv文本的某行或某列数据的实例
Apr 03 Python
Python实现图片拼接的代码
Jul 02 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
pycharm修改file type方式
Nov 19 Python
python3爬取torrent种子链接实例
Jan 16 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
解析python中的jsonpath 提取器
Jan 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
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
php中hashtable实现示例分享
2014/02/13 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
小程序实现tab标签页
2020/11/16 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python开发游戏的前期准备
2019/05/05 Python
python gdal安装与简单使用
2019/08/01 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
python批量处理文件或文件夹
2020/07/28 Python
python处理document文档保留原样式
2019/09/23 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
Python实现自动整理文件的脚本
2020/12/17 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
实习心得体会
2014/01/02 职场文书
广播节目策划方案
2014/05/23 职场文书
农村门前三包责任书
2014/07/25 职场文书
参观邀请函范文
2015/02/02 职场文书
MongoDB使用场景总结
2022/02/24 MongoDB
Java字符串逆序方法详情
2022/03/21 Java/Android