Forma correcta de definir la codificación del código fuente de Python
PEP 263 define cómo declarar la codificación del 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> -*-
Es decir, dice encoding
en lugar de coding
.
¿Cómo se debe declarar la codificación del archivo?
Utilice "SyntaxError: carácter no ASCII ..." o "SyntaxError: código no UTF-8 que comienza con ..." intentando utilizar texto no ASCII en un script de Python para cerrar preguntas duplicadas sobre errores de sintaxis resultantes de un Declaración de codificación faltante o defectuosa. Esta pregunta, en cambio, es la canónica para preguntas sobre cómo se redacta la declaración y si es necesaria.
Consulte los documentos aquí :
"Si un comentario en la primera o segunda línea del script de Python coincide con la 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 es reconocido también por GNU Emacs, y
# vim:fileencoding=<encoding-name>
que es reconocido por el VIM de Bram Moolenaar."
Por lo tanto, puedes poner prácticamente cualquier cosa antes de la parte de "codificación", pero quédate con "codificación" (sin prefijo) si quieres ser 100% compatible con las recomendaciones de python-docs.
Más específicamente, debe usar todo lo que Python reconozca y el software de edición específico que use (si es que necesita/acepta algo). coding
Por ejemplo , GNU Emacs reconoce el formulario (listo para usar), pero no Vim (sí, sin un acuerdo universal, es esencialmente una guerra territorial ).
PEP 263:
la primera o segunda línea debe coincidir con la expresión regular "coding[:=]\s*([-\w.]+)"
Entonces, " codificación en: UTF-8 " coincide.
PEP proporciona algunos ejemplos:
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
# This Python file uses the following encoding: utf-8
import os, sys
Simplemente copie y pegue la siguiente declaración en la parte superior de su programa. Resolverá los problemas de codificación de caracteres
#!/usr/bin/env python
# -*- coding: utf-8 -*-