【发布时间】:2021-11-19 23:44:18
【问题描述】:
我写了一个程序来做一个特定的目的。当我运行程序时,我有一个 ASCII 艺术横幅,它写入一个 txt 文档,然后是程序生成的一些解析数据。程序在没有特定字符的情况下运行良好,但是当我尝试将“█”写入文本文件时,我收到以下错误。
文件“REDACT.py”,REDACT 行,在 报告.write('█') 文件“C:\Users\REDACT\AppData\Local\Programs\Python\Python38-32\lib\encodings\cp1252.py”,第 19 行,编码 返回 codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError:“charmap”编解码器无法对位置 0-6 中的字符进行编码:字符映射到
记事本似乎可以很好地显示和打印字符,但是python中的某些编码无法识别该字符。任何帮助将非常感激。提前谢谢你。
【问题讨论】:
-
当您在没有指定编码的情况下打开一个文本文件进行写入时,Python 会选择一些与平台相关的默认值,在您的情况下显然是 CP-1252(«Windows Latin-1»)。该编解码器不支持您要编写的字符。如果您想控制输出编码,请在
open调用中指定它:open(..., encoding=CODEC)。CODEC的一个不错的选择通常是"utf8",但如果你使用记事本,我会选择"utf-8-sig"。 -
请edit 分享您的问题minimal reproducible example。
标签: python python-3.x unicode character-encoding unicode-string