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

Python写入HTML文件时遭遇UnicodeEncodeError编码错误求助

解决UnicodeEncodeError:写入HTML文件时的编码问题

这个问题在Windows环境下很常见,根源在于你打开文件时没有指定正确的编码格式。系统默认用的cp1252编码只支持有限的字符集,没法处理网页里可能包含的非拉丁字符(比如你遇到的西里尔字母\u0421)。

直接修改代码,在打开文件时指定UTF-8编码就能解决:

import requests
import bs4

res = requests.get('https://example.com')
soup = bs4.BeautifulSoup(res.text, 'lxml')
page_HTML_code = soup.prettify()

# 指定UTF-8编码打开文件,同时用with语句自动管理文件生命周期
with open("testfile.txt", "w+", encoding="utf-8") as f:
    f.write(page_HTML_code)

几个关键说明:

  • UTF-8编码:它是通用的Unicode编码格式,支持全球几乎所有字符,完全适配网页HTML内容的多样性。
  • with语句:替代手动调用f.close(),可以确保文件在操作完成后自动关闭,避免资源泄漏或者未保存的问题。
  • 为什么之前出错?:soup.prettify()返回的是Unicode字符串,当你用默认编码写入时,cp1252无法映射某些特殊字符,就会抛出UnicodeEncodeError。

如果你的目标文件需要被某些Windows旧软件识别,也可以尝试用encoding="utf-8-sig",它会在文件开头添加UTF-8 BOM标记,不过大多数现代工具都不需要这个,常规场景用utf-8就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:16