requests.get()读取GBK网页报UnicodeDecodeError,根本原因是requests误判编码为utf-8而非HTML中声明的gbk;应弃用r.text,改用r.content配合meta标签提取真实charset后decode,并写入时显式指定encoding='utf-8'。

requests.get() 读取GBK网页时直接报 UnicodeDecodeError
requests 默认用 r.encoding 推断编码,但很多中文网站 HTML 中声明了 charset=gbk,而 requests 却误判为 utf-8,导致 r.text 解码失败。错误信息通常长这样:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa6 in position 123。
根本不是网页“有问题”,而是 requests 没按 HTML 声明的编码去解码字节流。
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 别碰
r.text—— 它已经按错误编码解过一次,再处理只会雪上加霜 - 改用
r.content(原始 bytes),自己动手 decode - 优先从响应头或 HTML meta 标签里提取真实编码,而不是猜
从 HTML 中精准提取 charset 值
网页的 <meta charset="gbk"> 鎴

















