python:在文件中写★

TJ1*_*TJ1 4 python file non-ascii-characters python-3.x

我正在尝试使用:

text = "?"
file.write(text)
Run Code Online (Sandbox Code Playgroud)

在python 3.但我收到此错误消息:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

如何在python文件中打印符号★?这与用作星级的符号相同.

MSe*_*ert 7

默认情况下open使用平台默认编码(请参阅docs):

encoding是用于解码或编码文件的编码的名称.这应该只在文本模式下使用.默认编码取决于平台(无论locale.getpreferredencoding()返回),但可以使用Python支持的任何文本编码.请参阅codecs模块以获取支持的编码列表.

这可能不是您自己注意到的支持非ascii字符的编码.如果你知道你想要utf-8那么明确地提供它总是一个好主意:

with open(filename, encoding='utf-8', mode='w') as file:
    file.write(text)
Run Code Online (Sandbox Code Playgroud)

使用with上下文管理器还可以确保在关闭句柄之前忘记关闭或抛出异常时没有文件句柄.