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
相关产品推荐
相关产品推荐

