【python】Python3中出现'gbk' codec can't encode characte的成功解决方法?

亲身测试,所遇问题完全解决!
2018/07/08 21:37 
环境:windows,Pycharm,python3.6.2

  使用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‘)  ,这样,问题将不复存在。

PS:
1.str转bytes叫encode,bytes转str叫decode
2.常用的中文编码名称

参考:博客园文章https://www.cnblogs.com/themost/p/6603409.html

【python】Python3中出现'gbk' codec can't encode characte的成功解决方法?

原文地址:https://www.cnblogs.com/520ZXL/p/9427807.html

时间: 2024-12-19 08:28:36

【python】Python3中出现'gbk' codec can't encode characte的成功解决方法?的相关文章

[python3 - TroubleShooting] UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 27: illegal multibyte sequence

问题: cmd里直接print的时候报错 之前已经测试了一个页面,编码没有问题.这是在爬类似页面的时候报的错 思路: 因为这个看上去不是整体的编码问题,所以我直接查看了报错的字符编码'\xa0',发现这个是unicode下的'&nbps',而这个编码不存在于gbk里 尝试: replace(u'\xa0', u' ') - 报同一个错,不知道为什么... encode('gbk', 'ignore').decode('gbk') - 解决 [python3 - TroubleShooting]

UnicodeEncodeError: 'ascii' codec can't encode characters in position 解决方法

今天把一个列表转换成字符串输出的时候出现了UnicodeEncodeError: 'ascii' codec can't encode characters in position : ordinal not in range(128)问题. 解决方法1: 在开头加上 import sys reload(sys) sys.setdefaultencoding( "utf-8" ) 完美解决. UnicodeEncodeError: 'ascii' codec can't encode

python写入文件中遇到 UnicodeEncodeError: ‘gbk’ codec can’t encode character 错误的解决办法

在写入TXT文件时,某些页面总是报UnicodeEncodeError: 'gbk' codec can't encode character错误,网上找了半天也没找到解决办法. 后来终于找到了解决办法,十分简单:在f = open('英语练习.txt','a+',encoding='utf-8') 里加上encoding='utf-8'这个参数就行了. 出错的原因是网页及python的编码都是utf-8,在写进txt时Windows默认转码成gbk,遇到某些gbk不支持的字符就会报错. 在打开

Python学习中,当使用writerow时输出多余的空行解决方法

今天在学习用Python进行CSV文件存储 当我以csv格式写入文件的时候,文件读取的时候出现了多余的空行,代码: 1 import csv 2 3 with open('data.csv', 'w') as csvfile: 4 writer = csv.writer(csvfile) 5 writer.writerow(['id', 'name', 'age']) 6 writer.writerow(['10001', 'Mike', '20']) 7 writer.writerow(['1

python编码问题——解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

python实现爬虫遇到编码问题: error:UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX 解决办法:改变标准输出 添加代码: sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码 ps: 1.str转bytes叫encode,bytes转str叫decode 2.常用的中文编码名

启动运行python3时 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 170: illegal multibyte sequence

重现 在cmd中输入Python,运行后,出现以下错误: Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. Failed calling

python3.4 UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position

python3.4 UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 实用python的时候 打开一个csv的文件出现一下错误. 然后百度了一下,找到了对应的解决方案 1 with open('History.csv','r',encoding='utf-8') as f: 在后面加上encoding=utf-8即可 python3.4 UnicodeDecodeError: 'gbk' codec can't

python 读取中文CSV 'gbk' codec can't decode bytes in position 2-3:illegal multibyte sequence

读取中文的文档如Excel,CSV文件,需要中文编码 如gbk 解码才能转Unicode:然而 数据混合类型,读CSV文件就会出错,经管Excel正常. UnicodeDecodeError :'gbk' codec can't decode bytes in position 2-3:illegal multibyte sequence意思是:将一个字符串,通过gbk的方式,去解码,想要获得Unicode字符串,结果出错了 解决方法:处理的字符的确是gb2312,但是其中夹杂的部分特殊字符,是

[python]UnicodeEncodeError: 'gbk' codec can't encode character 解决方法

在windows下面编写python脚本,编码问题很严重. 将网络数据流写入文件时时,我们会遇到几个编码: 1: #encoding='XXX' 这里(也就是python文件第一行的内容)的编码是指该python脚本文件本身的编码,无关紧要.只要XXX和文件本身的编码相同就行了. 比如notepad++ "格式"菜单里面里可以设置各种编码,这时需要保证该菜单里设置的编码和encoding XXX相同就行了,不同的话会报错 2:网络数据流的编码 比如获取网页,那么网络数据流的编码就是网页