如果你的来源是ASCII,你应该指定编码吗?

时间:2014-04-14 17:23:11

标签: python unicode

我们有一个完全用ASCII编码的大型项目。如果源中没有任何unicode,是否值得将编码语句放在每个源文件的开头(例如#coding = utf-8)?

谢谢, --Peter

3 个答案:

答案 0 :(得分:2)

为了便于移植,我会明确声明它,特别是当Python 3中的默认文件编码发生变化时(参见PEP-3120):

  

此PEP建议将默认源编码从ASCII更改为   UTF-8。继续支持替代源编码   存在;显式编码声明优先于   默认值。

虽然使用ASCII不会对您产生影响,但我会建议您将explicit is better than implicit添加到文件的顶部。

答案 1 :(得分:1)

你应该做两件事之一(至少):

  • 在您的存储库中添加一个钩子,使其在签入时验证所有python文件仍然是纯ASCII。
  • 将明确的ASCII编码标记放在文件中。

当显式标记为UTF-8时,您可能想要检查是否获得了明显更好的启动。无论如何,我会考虑解释器的错误。

这样,如果有人滑倒并错误地添加了一些非ASCII字符,你就不必追逐那个(潜在的)错误。明确限制为ASCII有一个优点:您实际上可以可靠地查看每个字符串包含的内容,并且没有看似相同的不同名称。

答案 2 :(得分:1)

ASCII is the default in Python 2UTF-8 is the default in Python 3

如果您的文件仅限ascii;你不需要在两个版本中声明源代码编码(ascii是utf-8的子集)。

非ASCII字符导致Python 2中出现SyntaxError,因此意外的非ascii字符不会被忽视并且不会破坏任何数据。没有理由为ascii-only文件声明源代码编码。