Woher kommt das: - * - Kodierung: utf-8 - * -


135

Python erkennt Folgendes als Anweisung, die die Codierung der Datei definiert:

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

Ich habe diese Art von Anweisungen definitiv schon einmal gesehen ( -*- var: value -*-). Woher kommt das? Was ist die vollständige Spezifikation, z. B. kann der Wert Leerzeichen, spezielle Symbole, Zeilenumbrüche oder sogar sich -*-selbst enthalten?

Mein Programm schreibt reine Textdateien und ich möchte einige Metadaten in diesem Format in sie aufnehmen.


3
Dies ist leichter zu merken und funktioniert in meinem Editor PyCharm. # coding: utf-8
CrizCraig

2
Die Verwendung # coding: utf8von Python 2.7 funktioniert auch außerhalb von PyCharm. (Ich benutze SublimeText).
Basj


1
@Cbhihe Bei dieser Frage geht es nicht um Python, nicht darum, was die Anweisung tut oder wie sie funktioniert. Es wird gefragt, welche Pre-Python-Software es erfunden hat und ob es mehr als nur Dateikodierung gibt.
Hamstergen

Antworten:


89

Diese Art der Angabe der Codierung einer Python-Datei stammt aus PEP 0263 - Definieren von Python-Quellcode-Codierungen .

Es wird auch von GNU Emacs erkannt (siehe Python-Sprachreferenz, 2.1.4 Codierungsdeklarationen ), obwohl ich nicht weiß, ob es das erste Programm war, das diese Syntax verwendet hat.



Danke für den aufmunternden Link. Ich hatte früher den Eindruck, dass die Richtlinie nur vom Texteditor verwendet wurde. Bis jetzt wusste ich nie, dass der Python-Interpreter den Kommentar tatsächlich analysiert hat, wenn er in den ersten beiden Zeilen der Datei vorhanden ist.
Umeboshi



4

In PyCharm würde ich es weglassen. Die UTF-8-Anzeige unten wird mit einer Warnung ausgeschaltet, dass die Codierung fest codiert ist. Denken Sie nicht, dass Sie den oben erwähnten PyCharm-Kommentar benötigen.


Wenn ich eine Zeile wie test1 = 'äöü'diese eingebe, deutet dies an, dass Sie der Datei einen solchen Kopf hinzufügen. (Pycharm 2019.1)
Eye

@Cutton Eye ist das mit Python 2 oder 3?
Boris
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.