Da dove viene questo: - * - coding: utf-8 - * -


135

Python riconosce quanto segue come istruzione che definisce la codifica del file:

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

Ho sicuramente visto questo tipo di istruzioni prima ( -*- var: value -*-). Da dove viene? Qual è la specifica completa, ad esempio il valore può includere spazi, simboli speciali, newline, persino -*-se stesso?

Il mio programma scriverà file di testo semplice e mi piacerebbe includere alcuni metadati usando questo formato.


3
È più facile da ricordare e funziona nel mio editor, PyCharm. # coding: utf-8
crizCraig

2
Usare # coding: utf8funziona fuori dagli schemi con Python 2.7, anche al di fuori di PyCharm. (Uso SublimeText).
Basj,


1
@Cbhihe Questa domanda non riguarda Python, non cosa fa l'istruzione o come funziona. Si sta chiedendo quale software pre-Python lo ha inventato e se c'è altro oltre alla semplice codifica dei file.
hamstergene

Risposte:


89

Questo modo di specificare la codifica di un file Python proviene da PEP 0263 - Definizione delle codifiche del codice sorgente di Python .

È anche riconosciuto da GNU Emacs (vedi Python Language Reference, 2.1.4 Dichiarazioni di codifica ), anche se non so se sia stato il primo programma a usare quella sintassi.


4
Da quanto posso concludere dal manuale di Emacs, il valore può essere qualsiasi espressione LISP, in particolare una stringa tra virgolette doppie
hamstergene,

Grazie per il link pep. In precedenza avevo l'impressione che la direttiva fosse utilizzata solo dall'editor di testo. Fino ad ora, non ho mai saputo che l'interprete python abbia effettivamente analizzato il commento se è presente nelle prime due righe del file.
umeboshi,



4

In PyCharm, lo lascerei fuori. Disattiva l'indicatore UTF-8 nella parte inferiore con un avviso che indica che la codifica è codificata. Non pensare di aver bisogno del commento di PyCharm menzionato sopra.


in realtà, se metto una linea come test1 = 'äöü'questa, ti suggerirò di aggiungere una tale intestazione al file. (pycharm 2019.1)
Cutton Eye

@Cutton Eye è quello con Python 2 o 3?
Boris
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.