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获取GY-85九轴模块信息示例
Dec 05 Python
简单介绍Python的Django框架加载模版的方式
Jul 20 Python
python getopt详解及简单实例
Dec 30 Python
Python实现k-means算法
Feb 23 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
python实现微信打飞机游戏
Mar 24 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
Python 统计序列中元素的出现频度
Apr 26 Python
Python实现信息管理系统
Jun 05 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/12/28 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
python编程羊车门问题代码示例
2017/10/25 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
如何定义TensorFlow输入节点
2020/01/23 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
采购助理岗位职责
2014/02/16 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
医生个人年度总结
2015/02/28 职场文书
创业计划书之网络外卖
2019/10/31 职场文书