Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
使用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中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
在学习python语言中用json库解析网络数据时,我遇到了两个编译错误:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:和json.decoder.JSONDecodeError: Expecting value:.费了一些时间才找到原因,在此记录总结,希望能对学习python的同学有所帮助. 我运行的程序初始如下: import json data=''' { 'name' : '
-
解决python多线程报错:AttributeError: Can't pickle local object问题
报错信息: Traceback (most recent call last): File "D:/flaskProject/test.py", line 35, in test pool.apply(self.out, args=(i,)) File "Python37-32\lib\multiprocessing\pool.py", line 261, in apply return self.apply_async(func, args, kwds).get(
-
Python发起请求提示UnicodeEncodeError错误代码解决方法
具体错误: UnicodeEncodeError: 'latin-1' codec can't encode characters in position 73-74: Body ('测试') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8. 解决: 对请求参数进行编码处理: 示例代码: import requests import json import re impo
-
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
在python的Beautiful Soup 4 扩展库的使用过程中出现了 TypeError: list indices must be integers or slices, not str 这个错误,这里就分析一下为什么会报错以及如何解决. 这个错误的意思是'类型错误:list的索引必须是'integers'或者'slices'不能是'str' 我出现错误的代码: #引入库 from bs4 import BeautifulSoup #读取页面 soup = BeautifulSoup(o
-
解决python报错MemoryError的问题
如下: python 32bit 最大只能使用 2G 内存,坑爹之处,超过 2G 报错MemoryError. 而 64bit python则无此限制,所以建议使用 64bit python. 可能存在的问题:以前 numpy.scipy 官方的库只支持 32bit python,现在应该发布了 64bit 对应版本. 以上这篇解决python报错MemoryError的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
python误差棒图errorbar()函数实例解析
这篇文章主要介绍了python误差棒图errorbar()函数实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数功能:绘制y轴方向或是x轴方向的误差范围. 调用签名:plt.errorbar(x, y, yerr=a, xerr=b) x:数据点的水平位置 y:数据点的垂直位置 yerr:y轴方向的数据点的误差计算方法 xerr:x轴方向的数据点的误差计算方法 代码实现: import matplotlib.pyplot as plt
-
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
今天在网上copy的一段代码,代码很简单,每行看起来该缩进的都缩进了,运行的时候出现了如下错误: [解决过程] 1.对于此错误,最常见的原因是,的确没有缩进.根据错误提示的行数,去代码中看了下,看起来没有什么问题呀,都有缩进,而且语法也没有错误呀. 2.仔细研究了下代码,发现真的看不出什么问题,突然想到了,把当前python脚本的所有字符(包括空格和tab字符)都显示出来看看到底有没有缩进或者是其他特殊的字符. 当前用的文本编辑器Notepad++,有个设置,可以显示所有的字符的. 在: 视图
-
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
今天使用pip安装第三库时,有时会报错: pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. 使用镜像:pip install xxxx -i https://pypi.douban.com/simple 如下: pip install virtualenv -i https://pypi.dou
-
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 这个问题. 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的. 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,
-
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 这个问题. 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的. 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,
-
Python BeautifulSoup中文乱码问题的2种解决方法
解决方法一: 使用python的BeautifulSoup来抓取网页然后输出网页标题,但是输出的总是乱码,找了好久找到解决办法,下面分享给大家首先是代码 复制代码 代码如下: from bs4 import BeautifulSoupimport urllib2 url = 'http://www.jb51.net/'page = urllib2.urlopen(url) soup = BeautifulSoup(page,from_encoding="utf8")print soup
-
python 字符串转列表 list 出现\ufeff的解决方法
如下所示: #文件内容 lisi lock = open("lock_info.txt", "r+",encoding="utf-8") lock_line = lock.readline() lock_list = lock_line.split(",") print(lock_list) y = lock_line.encode('utf-8').decode('utf-8-sig') print(y) #打印结果如下 [
-
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些初步的数据挖掘和分析. 在使用matplotlib画图时,横坐标为中文,但是画出的条形图横坐标总是显示"框框",就去查资料解决.感觉这应该是个比较常见的问题,网上的中文资料也确实很多,但是没有任何一个彻底解决了我遇到的问题.零零碎碎用了快3个小时的时间,才终于搞定.特此分享,希望能帮到有同
-
python的numpy模块安装不成功简单解决方法总结
为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程.方法发现总结得不是很全,这里总结一下,防止大家再出现这个问题没有解决方法. Python的魅力之一,就是拥有众多功能强大的插件,但是这些插件的寻找.安装.升级在windows系统上却非常之麻烦.首先安装完Python后需要在系统配置环境变量,接下来又要安装Setuptools,而且安装过程中还会报编码错误,对于需要拷贝源码安装的还需要去CMD里打命令,还得小心翼翼避免打错参数,如果没有一位有经验
-
Python文件循环写入行时防止覆盖的解决方法
存在问题: 利用写入代码 with open(r'F:\PythonFiles\PycharmFile\ssq.csv', 'w', encoding='utf-8-sig', newline='') as csvFile: csv.writer(csvFile).writerow([col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11]) # 给csv文件中插入一行 向CSV文件中循环写入行时,后面的数据总是把前面的数据覆盖掉 解决方
-
python关于矩阵重复赋值覆盖问题的解决方法
本文实例讲述了python关于矩阵重复赋值覆盖问题的解决方法.分享给大家供大家参考,具体如下: import itertools import numpy as np comb = list(itertools.combinations(list(range(regions)), 2)) bands_info = [] coeff = np.zeros([bands, len(comb)]) for cla in range(classes): class_info = data[:,cla*b
-
基于Python安装pyecharts所遇的问题及解决方法
最近学习到数据可视化内容,老师推荐安装pyecharts,于是pip install 了一下,结果...掉坑了,下面是我的跳坑经验,如果你有类似问题,希望对你有所帮助. 第一个坑: 这个不难理解,缺少pyecharts-jupyter-installer嘛,那就安一个呗.可能有人注意到,我使用的是python2 -m pip ...(这种写法是为了解决python 2和3共存时pip的冲突问题,具体解释在本页最后.) 本以为结束了,却掉进了第二个坑: 看到这个,很明显是安装MarkupSafe时
-
python中不能连接超时的问题及解决方法
要是我们大天朝的防火墙技术进步神速 解决方法 #只有修改pip源了. #临时使用: pip install pythonModuleName -i https://pypi.douban.com/simple #修改默认的软件源: #修改/etc/pip.conf 文件,即可为所有用户配置. liunx #修改~/.pip/pip.conf为当前用户配置. linux #windows下pip配置文件为 C:\Users\xx\pip\pip.ini ,没有就新建 最终变成了这样 •好的这就完成
随机推荐
- 使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
- Angularjs中的页面访问权限怎么设置
- Recommended C Style and Coding Standards中文翻译版第1/3页
- asp.net GridView导出到Excel代码
- 利用r.js打包模块化的javascript文件方法示例
- ASP .NET中执行控件(如ImageButton、LinkButton等)命令不刷新页面
- PHP实现异步调用方法研究与分享
- JavaScript italics方法入门实例(把字符串显示为斜体)
- Ajax跨域问题的解决办法汇总(推荐)
- spring实例化javabean的三种方式分享
- 初识NodeJS服务端开发入门(Express+MySQL)
- Java中使用json与前台Ajax数据交互的方法
- Jquery实现动态切换图片的方法
- 判定对象是否为window的js代码
- js实现上一页下一页的效果【附代码】
- 杰奇jieqi用户评论vip图标显示效果代码 原创
- Java线程之join_动力节点Java学院整理
- PHP统计目录下的文件总数及代码行数(去除注释及空行)
- Android实现点赞动画(27)
- Python实现读取txt文件并转换为excel的方法示例