De dónde viene esto: - * - codificación: utf-8 - * -


135

Python reconoce lo siguiente como instrucción que define la codificación del archivo:

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

Definitivamente vi este tipo de instrucciones antes ( -*- var: value -*-). ¿De dónde viene? ¿Cuál es la especificación completa, por ejemplo, puede el valor incluir espacios, símbolos especiales, nuevas líneas, incluso a -*-sí mismo?

Mi programa escribirá archivos de texto sin formato y me gustaría incluir algunos metadatos en ellos utilizando este formato.


3
Esto es más fácil de recordar y funciona en mi editor, PyCharm. # coding: utf-8
crizCraig

2
Usar # coding: utf8trabajos listos para usar con Python 2.7, incluso fuera de PyCharm. (Yo uso SublimeText).
Basj


1
@Cbhihe Esta pregunta no se trata de Python, no se trata de lo que hace la instrucción o cómo funciona. Se pregunta qué software anterior a Python lo inventó y si hay algo más que la codificación de archivos.
hamstergene

Respuestas:


89

Esta forma de especificar la codificación de un archivo Python proviene de PEP 0263 - Definición de codificaciones de código fuente de Python .

GNU Emacs también lo reconoce (consulte la Referencia del lenguaje Python, 2.1.4 Declaraciones de codificación ), aunque no sé si fue el primer programa en utilizar esa sintaxis.


44
Por lo que puedo concluir del manual de Emacs, el valor puede ser cualquier expresión LISP, en particular, una cadena entre comillas dobles
hamstergene

Gracias por el enlace de pep. Antes tenía la impresión de que la directiva solo la usaba el editor de texto. Hasta ahora, nunca supe que el intérprete de Python realmente analizó el comentario si está presente en las dos primeras líneas del archivo.
umeboshi



4

En PyCharm, lo dejaría fuera. Apaga el indicador UTF-8 en la parte inferior con una advertencia de que la codificación está codificada. No piense que necesita el comentario de PyCharm mencionado anteriormente.


en realidad, si pongo una línea como test1 = 'äöü'esta, te indicará que agregues un encabezado al archivo. (pycharm 2019.1)
Cutton Eye

@Cutton Eye, ¿eso es con Python 2 o 3?
Boris
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.