这里有一个带有非ASCII字符的小tmp.py文件:
if __name__ == "__main__":
s = 'ß'
print(s)
运行它时,我得到了以下错误:
Traceback (most recent call last):
File ".\tmp.py", line 3, in <module>
print(s)
File "C:\Python32\lib\encodings\cp866.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\xdf' in position 0: character maps to <undefined>
Python文档指出:
默认情况下,Python源文件被视为以UTF-8编码...
我检查编码的方法是使用Firefox(也许有人会建议更明显的方法)。我在Firefox中打开tmp.py,如果我选择查看->字符编码->Unicode(UTF-8),它看起来很好,就像这个问题上面的样子(带ß符号)。
如果我放置:
# -*- encoding: utf-8 -*-
作为 tmp.py 中的第一个字符串,它并没有改变任何东西 - 错误仍然存在。
有人能帮我找出我做错了什么吗?
u
没有任何作用(在早期版本的Python 3中是一个错误,直到为了向后兼容而被添加回来)。 - Woobles ='ß'
而不是s='ß'
。 - Anton Daneyko