我们有一个完全用ASCII编码的大型项目。如果源中没有任何unicode,是否值得将编码语句放在每个源文件的开头(例如#coding = utf-8)?
谢谢, --Peter
答案 0 :(得分:2)
为了便于移植,我会明确声明它,特别是当Python 3中的默认文件编码发生变化时(参见PEP-3120):
此PEP建议将默认源编码从ASCII更改为 UTF-8。继续支持替代源编码 存在;显式编码声明优先于 默认值。
虽然使用ASCII不会对您产生影响,但我会建议您将explicit is better than implicit添加到文件的顶部。
答案 1 :(得分:1)
你应该做两件事之一(至少):
当显式标记为UTF-8时,您可能想要检查是否获得了明显更好的启动。无论如何,我会考虑解释器的错误。
这样,如果有人滑倒并错误地添加了一些非ASCII字符,你就不必追逐那个(潜在的)错误。明确限制为ASCII有一个优点:您实际上可以可靠地查看每个字符串包含的内容,并且没有看似相同的不同名称。
答案 2 :(得分:1)
ASCII is the default in Python 2。 UTF-8 is the default in Python 3
如果您的文件仅限ascii;你不需要在两个版本中声明源代码编码(ascii是utf-8的子集)。
非ASCII字符导致Python 2中出现SyntaxError,因此意外的非ascii字符不会被忽视并且不会破坏任何数据。没有理由为ascii-only文件声明源代码编码。