Trabalhando com codificação UTF-8 em fonte Python

Considere:

$ 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

Como posso declarar cordas UTF-8 no código fonte?

No cabeçalho da fonte, você pode declarar:

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

Está descrito na PEP 0263:

Então você pode usar UTF-8 em cordas:

#!/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 declaração não é necessária em Python 3 pois UTF-8 é a codificação de fonte padrão (ver PEP 3120).

Além disso, pode valer a pena verificar se o seu editor de texto codifica corretamente o seu código em UTF-8. Caso contrário, você pode ter caracteres invisíveis que não são interpretados como UTF-8.

Comentários (15)

Não se esqueça de verificar se o seu editor de texto codifica corretamente o seu código em UTF-8.

Caso contrário, você pode ter caracteres invisíveis que não são interpretados como UTF-8.

Comentários (7)