Python写入ASCII艺术阴影字符█时出现UnicodeEncodeError如何解决
问题根因
该编码报错由Windows平台Python的默认文件编码机制导致:Windows简体/英文系统下Python 3.8及更早版本打开文本文件时,默认使用系统本地化编码cp1252,该编码字符集不包含█这类特殊块字符,写入时就会触发编码错误。记事本能正常显示是因为它会自动识别文件编码,不会限制为cp1252。
可行解决方案
- 最推荐方案:打开文件时显式指定UTF-8编码,兼容全字符集且记事本可正常识别
把原有打开文件的代码从:
修改为:report = open("你的目标文件名.txt", "w")
如果希望Windows记事本打开不会出现乱码,可以改用带BOM的UTF-8编码:report = open("你的目标文件名.txt", "w", encoding="utf-8")report = open("你的目标文件名.txt", "w", encoding="utf-8-sig") - 临时兼容方案:如果必须使用系统默认编码,可添加错误处理参数避免程序崩溃,弊端是不支持的字符会被替换为问号或直接丢弃:
# 无法编码的字符替换为? report = open("你的目标文件名.txt", "w", errors="replace") # 无法编码的字符直接忽略 report = open("你的目标文件名.txt", "w", errors="ignore")
内容的提问来源于stack exchange,提问作者ThatLukeGuy
相关产品推荐
相关产品推荐

