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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
零基础学Python(一)Python环境安装
Aug 20 Python
Python中使用第三方库xlrd来读取Excel示例
Apr 05 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
Python3用tkinter和PIL实现看图工具
Jun 21 Python
python3实现爬取淘宝美食代码分享
Sep 23 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
python实现矩阵打印
Mar 02 Python
python数组循环处理方法
Aug 26 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
Python实现PS滤镜中的USM锐化效果
Dec 04 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 动态执行带有参数的类方法
2009/04/10 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
twig模板常用语句实例小结
2016/02/04 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
python比较2个xml内容的方法
2015/05/11 Python
打包发布Python模块的方法详解
2016/09/18 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Python 类的特殊成员解析
2018/06/20 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
2014银行授权委托书样本
2014/10/04 职场文书
求职导师推荐信范文
2015/03/27 职场文书
初中班长竞选稿
2015/11/20 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
python实现过滤敏感词
2021/05/08 Python
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL