estandar - Forma correcta de definir la codificación del código fuente de Python
estandar de codificacion python (5)
PEP 263 define cómo definir la codificación de código fuente de Python.
Normalmente, las primeras 2 líneas de un archivo Python deberían comenzar con:
#!/usr/bin/python
# -*- coding: <encoding name> -*-
Pero he visto muchos archivos que comienzan con:
#!/usr/bin/python
# -*- encoding: <encoding name> -*-
-> codificación en lugar de codificación .
Entonces, ¿cuál es la forma correcta de declarar la codificación del archivo?
¿Está permitida la codificación porque la expresión regular utilizada es floja? ¿O es solo otra forma de declarar la codificación del archivo?
Estoy haciendo esta pregunta porque el PEP no habla de codificación , solo habla de codificación .
PEP 263:
la primera o segunda línea debe coincidir con la expresión regular "codificación [: =] / s * ([- / w.] +)"
Obviamente, coincide con " codificación: UTF-8 ".
PEP proporciona algunos ejemplos:
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
# This Python file uses the following encoding: utf-8
import os, sys
Si no me equivoco, la propuesta original para las codificaciones del archivo fuente fue usar una expresión regular para las primeras dos líneas, lo que permitiría ambas.
Creo que la expresión regular era algo similar a la coding:
seguido de algo.
Encontré esto: http://www.python.org/dev/peps/pep-0263/ Cuál es la propuesta original, pero parece que no puedo encontrar la especificación final que indique exactamente lo que hicieron.
Ciertamente he usado la encoding:
con gran efecto, así que obviamente eso funciona.
Intenta cambiar a algo completamente diferente, como duhcoding: ...
para ver si eso funciona igual de bien.
Simplemente copie y pegue debajo de la declaración en la parte superior de su programa. Solucionará los problemas de codificación de caracteres
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Sospecho que es similar a Ruby: cualquier método está bien.
Esto se debe en gran parte a que los diferentes editores de texto utilizan diferentes métodos (es decir, estos dos) de codificación de marcado.
Con Ruby, siempre que el primero, o el segundo si hay una línea shebang contiene una cadena que coincida:
coding: encoding-name
e ignorando cualquier espacio en blanco y otras pelusas en esas líneas. (A menudo puede ser a = en lugar de:, también).
Verifique los documentos here :
"Si un comentario en la primera o segunda línea de la secuencia de comandos de Python coincide con la coding[=:]/s*([-/w.]+)
expresión regular coding[=:]/s*([-/w.]+)
, Este comentario se procesa como una declaración de codificación"
"Las formas recomendadas de esta expresión son
# -*- coding: <encoding-name> -*-
que también es reconocido por GNU Emacs, y
# vim:fileencoding=<encoding-name>
que es reconocido por el VIM de Bram Moolenaar ".
Por lo tanto, puede colocar casi cualquier cosa antes de la parte de "codificación", pero atenerse a "codificación" (sin prefijo) si desea ser 100% compatible con python-docs-recommendation.
Más específicamente, necesita usar lo que Python y el software de edición específico que usa (si necesita / acepta algo) lo reconoce. Por ejemplo, la forma de coding
es reconocida (de fábrica) por GNU Emacs pero no por Vim (sí, sin un acuerdo universal, es esencialmente una guerra de territorio ).