背景
使用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。
原因
代码
写入文件代码:
如果我们打开一个文件,使用如下代码:
f = open("out.html","w")
在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就会导致解析不了,出现上述问题。
解决的办法就是,改变目标文件的编码:
f = open("out.html","w",encoding='utf-8')
这样,问题将不复存在。
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
文章详细解释了在Windows下使用Python处理文件或网络数据流时遇到的UnicodeEncodeError:gbk编码错误的原因,指出问题的关键在于目标文件的编码,默认可能是GBK,需要通过指定utf-8等其他编码来避免问题。
1022





