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 根据pid杀死相应进程的方法
Jan 16 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
Python操作mongodb数据库进行模糊查询操作示例
Jun 09 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
tensorflow 变长序列存储实例
Jan 20 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
python读写文件write和flush的实现方式
Feb 21 Python
django 模型中的计算字段实例
May 19 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
python爬虫搭配起Bilibili唧唧的流程分析
Dec 01 Python
Python标准库之typing的用法(类型标注)
Jun 02 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读取目录及子目录下所有文件名的方法
2014/10/20 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
python实现简单的TCP代理服务器
2014/10/08 Python
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
python实现telnet客户端的方法
2015/04/15 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
python快排算法详解
2019/03/04 Python
python函数的作用域及关键字详解
2019/08/20 Python
python中调试或排错的五种方法示例
2019/09/12 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
python redis存入字典序列化存储教程
2020/07/16 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
个人自荐材料
2014/05/23 职场文书
单身证明格式样本
2015/06/15 职场文书
校运会新闻稿
2015/07/17 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python