Python requests乱码的五种解决办法, resp.content.decode() 和 resp.text 如何选择
resp.text工作原理: requests 库会尝试根据 HTTP 响应头中的 Content-Type例如 text/html; charsetutf-8或通过 Chardet 库自动猜测响应内容的编码。然后它会将原始的字节内容自动解码成 Unicode 字符串。优点:方便快捷: 大多数情况下这是获取文本内容最直接、最方便的方式无需手动处理编码。自动编码检测: 能够智能地处理多种编码情况。缺点:可能出现乱码: 如果 requests 自动检测到的编码不正确或者响应头中没有明确指定编码就可能出现乱码问题。选择当您确定响应内容是文本如 HTML、JSON、XML、纯文本等并且requests能够正确识别其编码时这是最推荐和最方便的方式。快速获取文本: 如果您只是想快速查看响应内容不关心具体的编码细节可以先尝试resp.text。首选resp.text乱码时考虑resp.content.decode()如果是内容确定的页面 resp.content.decode(encoding) 中的encoding 可以通过chardet手动获取一下然后把结果硬编码到 resp.content.decode(“通过chardet获取的编码”)中例如chardet.detect(res.content)[encoding] 得到的是“gbk”那么就直接硬编码resp.content.decode(gbk)如果想尽量一招通杀例如直接在写日志的函数中可以log_txt resp.content.decode(cchardet.detect(resp.content)[encoding])如果在传给写日志函数前就将resp.encoding属性设置好就更佳了。# 如果已知 resp.text 无乱码, 可以什么都不做 # 如果已知 utf-8 可以解决乱码则可写: resp.encodingutf-8 # 如果未知,则 resp.encoding cchardet.detect(resp.content)[encoding] # 然后统一用 resp.text log_txtresp.text使用requests模块请求网页内容经常会出现乱码例如import requests res requests.get(https://www.baidu.com/) print(res.text)乱码的原因是内容编码和解码方式不一致导致的解决办法有以下几种解决办法第一种apparent_encodingimport requests res requests.get(https://www.baidu.com/) res.encoding res.apparent_encoding print(res.text)另有解释r.encoding是直接套用response的charset字段如果response没有charset那么r.encoding 就会不管三七二十一想当然地设为ISO-8859-1这种情况下r.encoding不值得信任。所以先判断r.encoding是否等于ISO-8859-1如果是再用 r.apparent_encoding替换感觉这样应该更好if r.encoding ISO-8859-1: r.encoding r.apparent_encoding;我们看看官方源代码具体来看r.encoding和r.apparent_encoding的值是怎么来的1先说r.encodingresponse.encoding get_encoding_from_headers(response.headers)https://github.com/requests/requests/blob/d55de2d391d1350766221ce0aa36e670dc2a0169/requests/adapters.py#L2732再说r.apparent_encodingchardet.detect(self.content)[encoding]#调用了chardet模块的detect方法参数给的是r.contenthttps://github.com/requests/requests/blob/d55de2d391d1350766221ce0aa36e670dc2a0169/requests/models.py#L719github.com/requests/requests/blob/d55de2d391d1350766221ce0aa36e670dc2a0169/requests/models.py#L719可以知道r.apparent_encoding是否准确其实就是看chardet.detect是否准确。第二种content utf-8解码一种临时性的解决办法不建议用这种方法相当于写死代码了。import requests res requests.get(https://www.baidu.com/) try: txt res.content.decode(gbk) except UnicodeDecodeError as e: # print(e) txt res.content.decode(utf-8) print(txt)第三种chardetimport requests import chardet res requests.get(https://www.baidu.com/) encoding chardet.detect(res.content)[encoding] print(res.content.decode(encoding))第四种cchardetcchardet需要提前安装一下​​pip install cchardet​​。import requests import cchardet res requests.get(https://www.baidu.com/) encoding cchardet.detect(res.content)[encoding] print(res.content.decode(encoding))chardet和cchardet的区别cchardet是chardet的一个加速版本使用了C语言实现因此性能更高chardet和cchardet都是 Python 库用于字符编码检测主要用于确定文本数据的字符编码格式如UTF-8、ISO-8859-1等以便正确地解析和处理文本数据。它们之间的主要区别在于性能和实现语言。chardet:chardet是一个用 Python 编写的字符编码检测库。它的性能相对较慢因为它是一个纯Python库不是特别适合处理大型文本数据。chardet基于统计模型和启发式算法通过分析字符的分布和出现频率来猜测文本的编码。你可以使用chardet安装它通常是通过pippip install chardet。cchardet:cchardet是chardet的一个加速版本使用了C语言实现因此性能更高。由于它是用C编写的所以在处理大型文本文件时速度更快适用于需要高性能字符编码检测的应用。cchardet通常被认为是chardet的替代品可以无缝替代chardet因为它提供了相同的接口。你可以使用cchardet安装它通常是通过pippip install cchardet。总之如果你需要进行字符编码检测并且对性能有较高要求可以考虑使用cchardet。如果性能不是首要考虑因素或者你需要在某些环境中使用纯Python库那么chardet仍然是一个不错的选择。第五种encode decodeimport requests import cchardet res requests.get(https://www.baidu.com/) res_encoding res.encoding # 响应的编码方式 con_encoding cchardet.detect(res.content)[encoding] # 内容的编码方式 print(res.text.encode(res_encoding).decode(con_encoding)) # 重新编解码text

相关新闻

GPU占用率上不去?从资源排查到参数调优的实用指南

GPU占用率上不去?从资源排查到参数调优的实用指南

先说一个很多人容易误判的地方:GPU占用率上不去,不一定是显卡性能不行,很可能是任务切得不够细,或者数据搬运、CPU预处理、显存分配这些环节把GPU给“晾”在了一边。这篇文章就围绕一件事:怎么让GPU在普通开发环境和服…

2026/8/26 13:41:16 阅读更多 →
Vue3文本省略(Ellipsis)

Vue3文本省略(Ellipsis)

效果如下图: 在线预览 APIs Ellipsis 参数说明类型默认值maxWidth文本最大宽度,单位 pxstring | number‘100%’tooltipMaxWidth弹出提示最大宽度,单位 px,默认为 文本宽度 24string | numberundefinedline最大行数numberunde…

2026/8/26 13:41:16 阅读更多 →
充放电特效-支持滑动设置充放电值

充放电特效-支持滑动设置充放电值

效果&#xff1a; findViewById<FlickerProgressBar>(R.id.flicker_view).apply {//设置动画模式&#xff08;0&#xff1a;左侧进入&#xff0c;1&#xff1a;右侧进入&#xff09;setFlickerAnimMode(0)//设置滑块是否可用&#xff0c;是否显示setIndicatorScrollEnabl…

2026/8/26 13:41:16 阅读更多 →

最新新闻

从404到完美文档:rspec_api_documentation实战问题解决方案

从404到完美文档:rspec_api_documentation实战问题解决方案

从404到完美文档&#xff1a;rspec_api_documentation实战问题解决方案 【免费下载链接】rspec_api_documentation Automatically generate API documentation from RSpec 项目地址: https://gitcode.com/gh_mirrors/rs/rspec_api_documentation 你是否还在为API文档与代…

2026/8/26 14:13:15 阅读更多 →
ArcGISPro关联表标注属性方法,主表要素类提取独立表字段标注

ArcGISPro关联表标注属性方法,主表要素类提取独立表字段标注

# # 函数定义&#xff1a;ArcGIS Pro Python 标注表达式入口 # 参数带 [] 是 ArcGIS 特殊语法&#xff0c;表示从当前要素图层传入对应字段的值 # 参数说明&#xff1a; # [ZDDM] - 宗地代码&#xff08;用于查询关联表&#xff0c;并取后7位作为分子显示&#xff09; # …

2026/8/26 14:13:15 阅读更多 →
仿真驱动制造:弯管运动仿真解锁管材加工数字化新路径

仿真驱动制造:弯管运动仿真解锁管材加工数字化新路径

在汽车、航空航天、制冷暖通、液压装备等高端制造领域&#xff0c;空间复杂弯管是系统中不可或缺的核心零部件&#xff0c;液压管路、燃油管路、汽车冷却管路、空调管件的加工精度&#xff0c;直接决定整机装备的可靠性与安全性。传统弯管加工长期依靠工程师经验调试&#xff0…

2026/8/26 14:12:15 阅读更多 →
VESTA结构文件如何指定原子增加箭头

VESTA结构文件如何指定原子增加箭头

VESTA结构文件如何指定原子增加箭头在凝聚态物理与材料科学的计算中&#xff0c;研究者常需可视化磁矩、声子振动模式或原子位移。将 VASP 输出的 POSCAR 文件导入 VESTA 后&#xff0c;虽然可以通过图形界面逐一添加矢量箭头&#xff0c;但对于大体系或特定模式&#xff0c;直…

2026/8/26 14:12:15 阅读更多 →
atcoder-cli 登录机制揭秘:acc login 如何安全保存会话而不泄露密码

atcoder-cli 登录机制揭秘:acc login 如何安全保存会话而不泄露密码

atcoder-cli 登录机制揭秘&#xff1a;acc login 如何安全保存会话而不泄露密码 【免费下载链接】atcoder-cli AtCoder command line tools 项目地址: https://gitcode.com/gh_mirrors/at/atcoder-cli atcoder-cli&#xff08;命令行工具 acc&#xff09;是一个面向 AtC…

2026/8/26 14:12:15 阅读更多 →
AI 桌宠自制工坊使用教程:从上传角色到打包运行,全程零代码

AI 桌宠自制工坊使用教程:从上传角色到打包运行,全程零代码

AI 桌宠自制工坊使用教程&#xff1a;从上传角色到打包运行&#xff0c;全程零代码 快速开始&#xff1a;十分钟做一个桌宠 启动 Web 工作室&#xff1a;在 web 目录执行 node scripts/serve.mjs&#xff0c;浏览器打开 http://localhost:4173&#xff1b;角色&#xff1a;Web …

2026/8/26 14:10:13 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要&#xff1a; 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数&#xff08;random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录&#xff1a; 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中&#xff0c;主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段&#xff0c;转入了政务服务的常态化落地应用&#xff1b;在实际使用过程中&#xff0c;它能自主理解办事需求、辅助完成填报申报、开展材料预审&#xff0c;并联动多个系统协同作业&#xff0c;真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态&#xff0c;宏观上观察到的光是由无数个微观的光量子组成的&#xff0c;每个光子在产生的瞬间&#xff0c;其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前&#xff0c;在微观层面&#xff0c;每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”&#xff0c;而是SIP会话的动态重定向你有没有遇到过这样的场景&#xff1a;客服坐席A正在和客户通电话&#xff0c;突然需要把这通对话无缝转给专家坐席B&#xff0c;客户完全感知不到中间的断连——既没听到忙音&#xff0c;也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack&#xff1f;如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法&#xff0c;那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →