python write 写入为什么会报这个错'gbk'codec can't encode character \xbb'i

如题所述

使用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 write 写入为什么会报这个错'gbk'codec can't encode character...
f.write(txt),那么txt是一个字符串,它是通过decode解码过的字符串。关键点就要来了:目标文件的编码是导致标题所指问题的罪魁祸首。如果我们打开一个文件:复制代码代码如下:f = open("out.html","w"),在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数...

...gbk' codec can't decode byte 0x99 in position 166?
这个错误通常是由于Python解释器无法将输入的字节序列解码为Unicode字符串,而导致的。它通常是因为编码不匹配导致的,比如在GBK编码下输入了一个无法解码的字节。解决此问题的方法是将Python解释器的编码设置为匹配输入的编码。可以使用以下方法来解决该问题:在终端或控制台输入以下命令设置Python解释器的编码为...

python gbk 编码:'gbk'codec can't decode byte 0x81 in position 18...
是因为python实现爬虫遇到编码问题:error:UnicodeEncodeError: 'gbk' codec can't encode character '\\xXX' in position XX。具体解决办法:改变标准输出,添加代码。1、str转bytes叫encode,bytes转str叫decode。2、常用的中文编码名称

python UnicodeDecodeError: 'gbk' codec can't decode byte 0xff...
比如 f = open(newf,'r',encoding= 'gbk')这样就好了 到底是编码可以试 比如utf-8 啥的也可以用有的文本编辑器查看

Python 报错'ascii' codec can't decode byte 0xe5 in position 0: o...
编码错误,关于python的编码很糟心的。特别是windows下的python 0、所有字符编码使用utf8 1、建议你使用python3.0以上版本。2、xml文件或者python源文件没有使用utf8方式编码。

...UnicodeEncodeError: 'ascii' codec can't encode character...
归根结底是两个对象的类不同,但python不支持这两种类型的强转,个人想了个比较临时的解决方案,算是个python打了个补丁,就是将字符串转成二进制,再转回字符串,这样就unicode就不用给他加上编码方式再转成二进制字符串了,修改后的代码如下:-*- coding: utf-8 -*-import requestsfrom bs4 ...

python显示乱码
'ascii' codec can't encode characters in position 7-8: ordinal not in range(128)print的时候出现这个错误一般可以使用这个方案去处理。为了避免代码中到处都要去encode(“xxx”),还有可能不同的地方写得不一样带来不一致的情况,推荐使用这个:import sys reload(sys)sys.setdefaultencoding('utf8...

python编码问题:'ascii' codec can't decode byte 0xb0 in position 1...
你好,在文件的开头加utf-8,只是用来说明文件的保存格式是utf-8,并不能说明都能编码和解码成功:(1)在出现中文字符的前面加上:u"中文"(2)使用encode和decode。

...gbk' codec can't encode character '\\ue4bf...
然后你爬网页的时候会把它转化成Unicode,出问题的是在print()这儿,对于print()这个函数,他需要把内容转化为'gbk'编码才能显示出来. 然后解决办法是这样,你在转化后的Unicode编码的string后面,加上 .encode('GBK','ignore').decode('GBk') 也就是先用gbk编码,忽略掉非法...

Python错误1:'ascii' codec can't decode byte 0xef
报错:出现’ascii’ codec can’t decode byte 0xef in position 0:ordinal not in range(128)的错误。unicode指的是万国码,是一种“字码表”。而utf-8是这种字码表储存的编码方法。unicode不一定要由utf-8这种方式编成bytecode储存,也可以使用utf-16,utf-7等其他方式。目前大多都以utf-8的...

相似回答