怎么解决在python使用print出现各种中文输出错误(‘‘gbk‘ codec can‘t encode character ‘\xe7‘ in position 368: illegal m’)

        我不是第一次出现这种问题了,之前上CSDN查过各种方法,大多数说是各种编码问题,乱七八糟的,最后也没有解决,今天,我提出一种我发现的可以不用打印在控制台,而是输出到text文档,避免这种问题的方式。

        

import requests
from bs4 import BeautifulSoup

url='https://www.baidu.com'
res=requests.get(url)
print(res.text)

        上面是我输出错误结果的代码,输出是这样的:

Traceback (most recent call last):
  File "D:\python练习\pythonProject3\爬取天气学习2.py", line 7, in <module>
    print(res.text)
UnicodeEncodeError: 'gbk' codec can't encode character '\xe7' in position 318: illegal multibyte sequence

        爬取网站数据 ,输出返回内容,这里是还没有进行处理的,为了看着方便,实际上是还要处理数据的,而且就算是处理完再输出,还是会报上面的错。

        解决方法:

  1. 先在pycharm左端新建一个txt文件(当然我是为了代码方便,你把txt文档建在其他磁盘也可以,我都进行尝试了。)
  2. 写代码:先打开txt文件,再将内容写入到这个txt文件中:
    # coding=gbk        #这里设置的是控制台的编码格式,但是好像用gbk还是用utf-8还是什么都能输出到txt文档
    #我加上面那句话只是如果我不加我的pycharm会报错
    
    import requests
    #打开txt文档
    file_name=r'D:/abcd.txt'
    f1=open(file_name,'w',errors='ignore')#这里你甚至不用写encoding是什么
    #从网页获取内容
    url='https://www.baidu.com'
    res=requests.get(url)
    #将返回内容写入txt文档
    f1.write(res.text)

          注意:用'w'表示用写入方式打开txt文档,还有要注意的是,用'w'方式会先清空txt文档,再进行写入,如果想要用追加方式具体可以去查。还有,写入什么内容可以自己选择。而且,那些无法解析的字符在输出到txt文档时可能会用?或比较奇怪的符号替代。

这是我的写入结果:(这是win11版本的txt文档,看起来不太一样。)

        怎么输出中文:(有兴趣的可以继续往下看)

  1. 还是使用将文本输出到txt文档,这次我们选择输出到在当前文件夹下新建的文档来看。

 点击File->输入“你想要的文档名字.txt”(这个后缀.txt一定要加!!!)

        2.示例代码如下:

# coding=gbk
file_name='abcd.txt'
f_decode1=open(file_name,'w',encoding='gbk',errors='ignore')
f_decode1.writelines('今天天气非常好')

        第一句:#coding=gbk这句话,是设定控制台的编码格式,如果我们要输出,那我们的文本文档写入格式一定要和控制台设定的编码格式一样。

        控制台设定的编码格式在这里看:

         我的意思是:第三句话中的encoding=‘gbk’这里写的格式要和#coding='gbk'这里编码格式写的一样,不是一定要是gbk格式,用utf-8格式也可以。甚至你不加encoding=‘gbk’也可以,好像它是会自动识别的。但是一定不能写的不一样。

        这是输出结果:

今天天气非常好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值