web-dev-qa-db-ja.com

これはどこから来たのか:-*-コーディング:utf-8-*-

Pythonは、ファイルのエンコーディングを定義する命令として次を認識します。

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

私は間違いなく、この種の指示を見ました(-*- var: value -*-)。それはどこから来たのですか?完全な仕様は何ですか?値にスペース、特殊記号、改行、さらには-*-自体を含めることができますか?

私のプログラムはプレーンテキストファイルを作成するので、この形式を使用してメタデータを含める必要があります。

121
hamstergene

Pythonファイルのエンコーディングを指定するこの方法は、 PEP 0263-Pythonソースコードエンコーディングの定義 に由来します。

GNU Emacsでも認識されます( Python言語リファレンス、2.1.4エンコーディング宣言 を参照)。ただし、その構文を使用した最初のプログラムであったかどうかはわかりません。

78

これはいわゆるファイルローカル変数であり、Emacsによって理解され、それに応じて設定されます。対応する Emacsマニュアルのセクション を参照してください-ファイルのヘッダーまたはフッターで定義できます

7
Alex Ott

PyCharmでは、それを省きます。エンコーディングがハードコードされていることを警告して、下部のUTF-8インジケータをオフにします。上記のPyCharmコメントが必要だとは思わないでください。

5
cwp393