这是我的简单代码:
#!/usr/bin/env python
# -*- coding: windows-1255 -*-
str = "\u05dc\u05d9\u05d0\u05d5\u05e8"
print (str)
你能告诉我为什么会出现这个错误吗?
python SyntaxError: encoding problem: windows-1255 with BOM
非常感谢
这是我的简单代码:
#!/usr/bin/env python
# -*- coding: windows-1255 -*-
str = "\u05dc\u05d9\u05d0\u05d5\u05e8"
print (str)
你能告诉我为什么会出现这个错误吗?
python SyntaxError: encoding problem: windows-1255 with BOM
非常感谢
您将简单代码保存在明确包含 BOM 的编码中——对于 21 世纪的编辑器,这很可能是 UTF-8。您的程序中没有非 7 位 ASCII 字符,因此 BOM 不是必需的——但是众所周知,计算机很笨,可以按照您的要求去做。但是在脚本的顶部,您声明您正在使用一种完全类型的编码——一种不使用 BOM 的编码——因此 Python 会抱怨。
顺便说一句,您的脚本中有 Unicode 字符串这一事实并不重要。当你保存一个简单的
#!/usr/bin/env python
# -*- coding: windows-1255 -*-
x
并尝试运行它。
这有点出乎意料,因为要解析顶部的编码行,Python 已经不得不读取并跳过 BOM。但这种编码表明不应该有 BOM,所以一定有——正如 Python 正确得出的结论——在某处出现错误。
不要躺在编码行或没有BOM的情况下保存,问题就消失了。如果您无法找出编辑器以这种方式保存的原因或无法找出如何以正确的编码正确保存,请将顶部的行更改为
# -*- coding: utf-8 -*-
关于不同编码和 Unicode 问题的一个很好的讨论是The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。