这是从哪里来的:-*-编码:utf-8-*-


135

Python将以下内容识别为定义文件编码的指令:

# -*- coding: utf-8 -*-

我确实在(-*- var: value -*-)之前看到过这种说明。它从何而来?完整规范是什么,例如,值可以包含空格,特殊符号,换行符,甚至-*-本身吗?

我的程序将编写纯文本文件,我想使用这种格式在其中包含一些元数据。


3
这更容易记住,并且可以在我的编辑器PyCharm中使用。# coding: utf-8
crizCraig 2012年

2
使用# coding: utf8作品的开箱与Python 2.7,外连PyCharm的。(我使用SublimeText)。
Basj


1
@Cbhihe这个问题与Python无关,与指令的功能或工作方式无关。它询问的是哪个Python之前的软件发明了它,以及它是否还有其他功能,而不仅仅是文件编码。
hamstergene '19

Answers:


89

这种指定Python文件编码的方式来自PEP 0263-定义Python源代码编码

GNU Emacs也可以识别它(请参阅Python语言参考,2.1.4编码声明),尽管我不知道它是否是第一个使用该语法的程序。


4
根据我从Emacs手册中得出的结论,值可以是任何LISP表达式,尤其是双引号字符串
hamstergene

感谢您的pep链接。我以前给人的印象是该指令仅由文本编辑器使用。直到现在,我还不知道python解释器是否实际上会解析注释,如果注释出现在文件的前两行中。
umeboshi 2014年



4

在PyCharm中,我将其省略。它将关闭底部的UTF-8指示器,并警告该编码为硬编码。不要以为您需要上面提到的PyCharm评论。


实际上,如果我这样输入一行test1 = 'äöü',将提示您将这样的标题添加到文件中。(pycharm 2019.1)
Cutton Eye

@Cutton Eye是使用Python 2还是3?
鲍里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.