一尘不染

定义Python源代码编码的正确方法

python

PEP 263定义了如何声明Python源代码编码。

通常,Python文件的前两行应以:

#!/usr/bin/python
# -*- coding: <encoding name> -*-

但是我看过很多以以下内容开头的文件:

#!/usr/bin/python
# -*- encoding: <encoding name> -*-

=> 编码而不是编码。

那么,声明文件编码的正确方法是什么?

是了编码允许的,因为所使用的正则表达式是懒惰?还是仅仅是声明文件编码的另一种形式?

我问这个问题是因为PEP不在谈论编码,它只是在谈论编码。


阅读 497

收藏
2020-02-18

共1个答案

一尘不染

在这里检查文档:

“如果Python脚本的第一行或第二行中的coding[=:]\s*([-\w.]+)注释与正则表达式匹配,则此注释将作为编码声明处理”

“此表述的推荐形式是

# -*- coding: <encoding-name> -*-

GNU Emacs也承认这一点,并且

# vim:fileencoding=<encoding-name>

被Bram Moolenaar的VIM认可。”

因此,你可以在“编码”部分之前放置几乎所有内容,但如果要100%兼容python-docs-recommendation,则应坚持使用“编码”(无前缀)。

更具体地说,你需要使用Python可以识别的任何东西以及你使用的特定编辑软件(如果它完全需要/接受任何东西)。例如,coding表格被GNU Emacs识别(开箱即用),但未被Vim识别(是的,没有普遍的协议,这本质上是一场草皮大战)。

2020-02-18