web-dev-qa-db-fra.com

D'où vient-il: - * - codage: utf-8 - * -

Python reconnaît les éléments suivants en tant qu’instruction qui définit le codage du fichier:

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

J'ai certainement vu ce genre d'instructions avant (-*- var: value -*-). D'où est ce que ça vient? Quelle est la spécification complète, par exemple la valeur peut-elle inclure des espaces, des symboles spéciaux, des nouvelles lignes et même -*- lui-même?

Mon programme va écrire des fichiers texte et je voudrais y inclure des métadonnées en utilisant ce format.

121
hamstergene

Cette manière de spécifier l'encodage d'un fichier Python provient de PEP 0263 - Définition de Python Encodages de code source) .

Il est également reconnu par GNU Emacs (voir Référence du langage Python, 2.1.4 Déclaration de codage) ), bien que je ne sache pas s'il s'agissait du premier programme à utiliser cette syntaxe.

78
Andrea Spadaccini

C'est ce que l'on appelle les variables locales du fichier, qui sont comprises par Emacs et définies en conséquence. Voir la section correspondante dans le manuel Emacs - vous pouvez les définir soit dans l'en-tête, soit dans le pied de page du fichier.

7
Alex Ott

Dans PyCharm, je laisserais tomber. Il éteint l'indicateur UTF-8 en bas et avertit que le codage est codé en dur. Ne pensez pas que vous avez besoin du commentaire PyCharm mentionné ci-dessus.

5
cwp393