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