Trabajar con la codificación UTF-8 en el código fuente de Python

Considera:

$ cat bla.py 
u = unicode('d…')
s = u.encode('utf-8')
print s
$ python bla.py 
  File "bla.py", line 1
SyntaxError: Non-ASCII character '\xe2' in file bla.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

¿Cómo puedo declarar cadenas UTF-8 en el código fuente?

En la cabecera de la fuente se puede declarar:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
....

Se describe en el PEP 0263:

Entonces puede utilizar UTF-8 en las cadenas:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

u = 'idzie wąż wąską dróżką'
uu = u.decode('utf8')
s = uu.encode('cp1250')
print(s)

Esta declaración no es necesaria en Python 3 ya que UTF-8 es la codificación de origen por defecto (ver PEP 3120).

Además, puede valer la pena verificar que su editor de texto codifica correctamente su código en UTF-8. De lo contrario, puede tener caracteres invisibles que no se interpretan como UTF-8.

Comentarios (15)

No olvide verificar si su editor de texto codifica correctamente su código en UTF-8.

De lo contrario, puede tener caracteres invisibles que no se interpretan como UTF-8.

Comentarios (7)