PEP 263定义了如何声明Python源代码编码.
通常,Python文件的前两行应该以:
#!/usr/bin/python # -*- coding:-*-
但我看到很多文件以:
#!/usr/bin/python # -*- encoding:-*-
=> 编码而不是编码.
那么声明文件编码的正确方法是什么?
是否允许编码,因为使用的正则表达式是懒惰的?或者它只是声明文件编码的另一种形式?
我问这个问题是因为PEP没有谈论编码,它只是谈论编码.
查看这里的文档:
"如果Python脚本的第一行或第二行中的coding[=:]\s*([-\w.]+)
注释与正则表达式匹配,则此注释将作为编码声明处理"
"这个表达的推荐形式是
# -*- coding:-*-
这也得到了GNU Emacs的认可,以及
# vim:fileencoding=
这是Bram Moolenaar的VIM认可的."
所以,你可以在"编码"部分之前添加任何东西,但如果你想要100%python-docs-recommendation兼容,坚持"编码"(没有前缀).
更具体地说,您需要使用Python识别的任何内容以及您使用的特定编辑软件(如果它需要/接受任何内容).例如,coding
表格被GNU Emacs识别(开箱即用)但不是Vim(是的,没有普遍协议,它本质上是一场草皮战争).
PEP 263:
第一行或第二行必须匹配正则表达式"coding [:=]\s*([ - \w.] +)"
所以," 编码:UTF-8 "匹配.
PEP提供了一些例子:
#!/usr/bin/python # vim: set fileencoding=:
# This Python file uses the following encoding: utf-8 import os, sys
只需在程序顶部复制粘贴下面的语句.它将解决字符编码问题
#!/usr/bin/env python # -*- coding: utf-8 -*-