You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析含西里尔字母网页时请求编码错误,如何解决?

解决requests获取西里尔字母网页编码乱码问题

出现乱码的核心原因是requests自动检测的编码与网页实际编码不匹配,这类包含西里尔字母的网页通常使用Windows-1251编码,以下是两种可行的解决方法:

方法1:手动指定响应编码

直接设置response.encoding为网页实际编码,让requests用正确编码解码字节流:

import requests

url = "http://www.cawater-info.net/karadarya/1991/veg1991.htm"
response = requests.get(url)
# 指定西里尔字母网页常用的Windows-1251编码
response.encoding = 'Windows-1251'
print(response.encoding)
print(response.text[:100])

方法2:手动解码响应字节内容

跳过requests的自动解码,直接获取响应字节并手动解码:

import requests

url = "http://www.cawater-info.net/karadarya/1991/veg1991.htm"
response = requests.get(url)
# 用Windows-1251编码解码字节内容
content = response.content.decode('Windows-1251')
print(content[:100])

为什么之前的尝试无效

你之前先通过response.text获取了已被错误编码解码的Unicode文本,此时再转码相当于对乱码二次处理,自然无法恢复正确内容。必须在解码字节流为文本前,指定正确的编码规则。

确认网页编码的小技巧

如果不确定编码,可以查看网页源码中的meta标签,通常会有类似如下声明:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

从中提取charset的值作为解码编码即可。

内容的提问来源于stack exchange,提问作者Qwerty Qazaq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:55:17