Forma correcta de definir la codificación del código fuente de Python

Resuelto Oli asked hace 15 años • 6 respuestas

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 encodingen 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.

Oli avatar Apr 08 '09 14:04 Oli
Aceptado

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). codingPor ejemplo , GNU Emacs reconoce el formulario (listo para usar), pero no Vim (sí, sin un acuerdo universal, es esencialmente una guerra territorial ).

Rafał Dowgird avatar Apr 08 '2009 08:04 Rafał Dowgird

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
vartec avatar Apr 08 '2009 08:04 vartec

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 -*-
Harun ERGUL avatar Mar 22 '2016 19:03 Harun ERGUL