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网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
python获取各操作系统硬件信息的方法
Jun 03 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
学生信息管理系统python版
Oct 17 Python
python 获取等间隔的数组实例
Jul 04 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
Python操作MySQL数据库的示例代码
Jul 13 Python
python中四舍五入的正确打开方式
Jan 18 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 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
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
discuz目录文件资料汇总
2014/12/30 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
Python向excel中写入数据的方法
2019/05/05 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
python数据类型强制转换实例详解
2020/06/22 Python
Python实现疫情地图可视化
2021/02/05 Python
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
发展部经理职责规定
2014/02/22 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
学校安全责任书
2014/04/14 职场文书
保护黄河倡议书
2014/05/16 职场文书
个人担保书范文
2014/05/20 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
督导岗位职责范本
2015/04/10 职场文书
通知函的格式
2015/04/27 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
Python中with上下文管理协议的作用及用法
2022/03/18 Python
Java中的继承、多态以及封装
2022/04/11 Java/Android