我正在尝试使用:
text = "★"
file.write(text)
在Python 3中。但是我收到此错误消息:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0: ordinal not in range(128)
如何在python中的文件中打印符号★?这是用作星级等级的符号。
默认情况下open
使用平台默认编码(请参阅文档(:
编码是用于解码或编码文件的编码的名称。这仅应在文本模式下使用。默认编码是平台依赖性的(任何
locale.getpreferredencoding()
返回(,但是可以使用Python支持的任何编码文本。有关支持的编码列表,请参见codecs
模块。
这可能不是您注意到自己的编码,它支持非aScii字符。如果您知道想要UTF-8,那么明确提供它总是一个好主意:
with open(filename, encoding='utf-8', mode='w') as file:
file.write(text)
使用with
上下文管理器还确保没有文件句柄,以防万一您忘记关闭或在关闭句柄之前会引发异常。