今天在使用Python文件处理写网络上爬取的文件的时候,遇到了错误:UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position … 这个问题。

代码:

import urllib.request  #等价与from urllib import request

response = urllib.request.urlopen("http://www.baidu.com")
print("查看response响应的类型",type(response))
page_contect = response.read()
with open(r'C:\Users\PINPIN\Desktop\docx\123.txt','w+') as f1:
f1.write(page_contect.decode('utf-8'))

出现错误:

查看response响应的类型 <class 'http.client.HTTPResponse'>

Traceback (most recent call last):

File "C:\Users\PINPIN\Desktop\docx\url_test.py", line 6, in <module>

f1.write(page_contect.decode('utf-8'))

UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 29150: illegal multibyte sequence

出现问题的原因:在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的爬取的网络数据流,然而数据流此时已经是decode过的unicode编码,这样的话就会导致解析不了。

解决的办法:改变目标文件的编码即可

在打开文件时,指定文件编码格式:encode=’utf-8’

with open(r'C:\Users\PINPIN\Desktop\docx\123.txt','w+',encode=’utf-’) as f1:

另外:网络数据流的编码,比如获取网页,网络数据流的编码就是网页的编码。需要使用decode解码成unicode编码。否则也会报错哦:TypeError: write() argument must be str, not bytes

f1.write(page_contect.decode('utf-8'))所以在这里需要进行解码decode('utf-8')

Python报错:UnicodeEncodeError 'gbk' codec can't encode character的更多相关文章

  1. 关于编码问题,报错:'gbk' codec can't encode character '\u3164' in position 0: illegal multibyte sequence

    之前经常在写入文件的时候遇到这种报错, 'gbk' codec can't encode character '\u3164' in position 0: illegal multibyte seq ...

  2. 爬取网页内容后写入文件报错UnicodeEncodeError: 'gbk' codec can't encode的问题解决方案

    老猿使用如下代码读取网页内容: req = urllib.request.Request(url=url,headers=header) text = urllib.request.urlopen(r ...

  3. python中time.strftime不支持中文,报错UnicodeEncodeError: 'locale' codec can't encode character '\u5e74' in position 2: encoding error

    使用time.strftime将 "2020-10-10 10:10:10" 转化为  2020年10月10日10时10分10 报错: import time timestr=&q ...

  4. python报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 22-26: ordinal not in range(128)”问题解决

    方案是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为: # encoding=utf8 import sys reload(sys) sys ...

  5. python基础===解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX(转载)

    本文转自:解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX 从网上抓了一些字 ...

  6. 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

    从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position ...

  7. 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

    从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position ...

  8. 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX(转)

    原文地址:https://www.cnblogs.com/feng18/p/5646925.html 从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'g ...

  9. Python_编码错误解决办法 python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

    先说解决办法:头部加几行代码 import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb1803 ...

  10. python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 30: illegal multibyte sequence

    昨天用用python3写个日志文件,结果报错UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 30: ...

随机推荐

  1. 业务逻辑:五、完成认证用户的动态授权功能 六、完成Shiro整合Ehcache缓存权限数据

    一. 完成认证用户的动态授权功能 提示:根据当前认证用户查询数据库,获取其对应的权限,为其授权 操作步骤: 在realm的授权方法中通过使用principals对象获取到当前登录用户 创建一个授权信息 ...

  2. hibernate里的实体类中不能重写toString

    @Test报堆栈溢出,   在main中报错toString

  3. Spring IOC容器解析及实现原理

    最近一段时间,“容器”两个字一直萦绕在我的耳边,甚至是吃饭.睡觉的时候都在我脑子里蹦来蹦去的.随着这些天一次次的交流.讨论,对于容器的理解也逐渐加深.理论上的东西终归要落实到实践,今天就借助sprin ...

  4. mingw和libcurl

    想用curl来做rest的客户端.所以就研究下这方面东西. 1:安装mingw 为什么用mingw,小巧,必vs快,gcc了解的多一些, http://tdm-gcc.tdragon.net/down ...

  5. HTML5与CSS3基础教程(第7版) 高清PDF扫描版​

    HTML5与CSS3基础教程(第7版)试读不仅介绍了文本.图像.链接.列表.表格.表单.多媒体等网页元素,也介绍了如何为网页设计结构.布局,添加动态效果.格式化等形式,此外还涉及调试和发布.聚合和吸引 ...

  6. 查询sql语句的执行时间

    我们开启执行计划来看sql语句的执行效率,看下索引是否使用等 但是执行计划没有告诉我们执行时间,刚刚看了一个代码,可以自己计算执行时间的 Declare @d Datetime      Set @d ...

  7. SQLServer数据库,表内存,实例名分析SQL语句

    --数据库内存分析 USE master go DECLARE @insSize TABLE(dbName sysname,checkTime VARCHAR(19),dbSize VARCHAR(5 ...

  8. 十天入门java教程 Day01

    这几年一直在想学一门语言,java,Python,php也都看过,但是没有一门是精的.语言学习并不是写出hello world就行了.个人感觉需要静心去学习. java语言是什么? java是一种计算 ...

  9. [CentOS7] timedatectl设置时区

    查看当前时区日期等配置 显示可选时区 选择时区

  10. ubuntu - 14.10,安装uget和aria2(下载工具)

    Windows下的下载工具--迅雷,之所以下载速度快,乃是它能搜索资源.为己所用,而不是仅仅从原始地址这单一资源处下载. Ubuntu下也有类似的工具,那就是aira2. aira2是一个命令行下载工 ...