当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《正确的方法来定义Python源代码编码》经验,为你挑选了3个好方法。

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

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

#!/usr/bin/python
# -*- coding:  -*-

但我看到很多文件以:

#!/usr/bin/python
# -*- encoding:  -*-

=> 编码而不是编码.

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

是否允许编码,因为使用的正则表达式是懒惰的?或者它只是声明文件编码的另一种形式?

我问这个问题是因为PEP没有谈论编码,它只是谈论编码.



1> Rafał Dowgir..:

查看这里的文档:

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

"这个表达的推荐形式是

# -*- coding:  -*-

这也得到了GNU Emacs的认可,以及

# vim:fileencoding=

这是Bram Moolenaar的VIM认可的."

所以,你可以在"编码"部分之前添加任何东西,但如果你想要100%python-docs-recommendation兼容,坚持"编码"(没有前缀).

更具体地说,您需要使用Python识别的任何内容以及您使用的特定编辑软件(如果它需要/接受任何内容).例如,coding表格被GNU Emacs识别(开箱即用)但不是Vim(是的,没有普遍协议,它本质上是一场草皮战争).


` - * - `确保该行被GNU Emacs(一些程序员喜欢的文本编辑器)识别.请注意,与此答案相反,Emacs表单和Vim表单都是100%python-docs-recommendation兼容(因为它们都匹配正则表达式 - "匹配",通过长期约定,意味着"匹配任何地方字符串",与Python的API相反).
为什么` - * - `?

2> vartec..:

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



3> Harun ERGUL..:

只需在程序顶部复制粘贴下面的语句.它将解决字符编码问题

#!/usr/bin/env python
# -*- coding: utf-8 -*-

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有