PySe-018-Requests 解决响应乱码

因网站实现不同,通常响应数据的编码会存在差异,导致在使用 requests 访问网站或接口获取响应结果时,获取的响应结果显示乱码,如下所示:

请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测,并使用其推测的文本编码 r.encoding 自动解码来自服务器的内容,因而大多数 unicode 字符集都能被无缝地解码。当编码格式与当前编码格式不一致时,包含显示的中文响应内容就会存在乱码,如上图中所示。

import sys

# 获取系统默认编码
print(sys.getdefaultencoding())

# 查看 requests 响应编码
r.encoding

因二者编码格式不一致,所以输出的响应内容中文显示会存在乱码,通过 r.encoding = ‘utf-8’ 修改响应编码格式,即可正常显示中文。修改后的编码如下图所示:

# encoding:utf-8

import requests
import urllib3
import sys

urllib3.disable_warnings()

def baidu():
    r = requests.get('https://www.baidu.com', verify=False)
    
    print('系统默认编码:' + sys.getdefaultencoding())
    print('请求响应编码:' + r.encoding)
    
    r.encoding = 'utf-8'
    print('修改后的编码:' + r.encoding)
    
    print('

')
    print(r.text)
    
if __name__ == '__main__':
    baidu()
    

执行结果如下图所示:

我本渺小,但山峰,我一次次绝顶!


PS:若有错误,敬请告知,不胜感激!
Copyright @范丰平 版权所有,如需转载请标明本文原始链接出处,严禁商业用途! 我的个人博客链接地址:http://www.cnblogs.com/fengpingfan
原文地址:https://www.cnblogs.com/fengpingfan/p/14463268.html