使用Python写入文件时报错:UnicodeEncodeError: 'gbk' codec can't encode character解决方法

songjun  2020-09-11 21:15:37  阅读 2556 次 评论 0 条
摘要:

使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 问题。出现这个问题是因为 在windows系统下,新 文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就

使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 问题。出现这个问题是因为 在windows系统下,新 文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就会导致解析不了,如下图:

捕获3.JPG

    在windows下面编写python脚本,编码问题很严重。

    将网络数据流写入文件时时,我们会遇到几个编码:

    1: encoding='***' 这里(也就是python文件第一行的内容)的编码是指该python脚本文件本身的编码,无关紧要。只要***和文件本身的编码相同就行了。不同的话会报错

    2:网络数据流的编码 比如获取网页,那么网络数据流的编码就是网页的编码。

    3:要将网络数据流的编码写入到新文件,那么我么需要指定新文件的编码。代码如:

import requests
a = requests.get('https://www.elw.cc/post/31.html')
cs = a.text
with open('ceshi.txt','a',encoding='utf-8') as aa:
    aa.write(cs)
open('ceshi.txt','a',encoding='utf-8')这句话意思就是:打开ceshi.txt文件,并指定它的编码为UTF-8,只需要在打开文件时,加上encoding='utf-8'这句,编码报错问题将不复存在了。


本文地址:https://www.elw.cc/index.php/post/32.html
版权声明:本文为原创文章,版权归 songjun 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?