Definindo a codificação em um código python
Imagino que você chegou até este artigo porque, ao executar seu código em python, obteve o seguinte erro:
SyntaxError: Non-ASCII character '\xc3' in file <arquivo> on line <numero de linha>, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Sei que você está com um tanto de pressa para resolver seu problema; se é esse o caso, insira no seu código, na primeira ou segunda linha, o código abaixo:
# -*- coding: utf-8 -*-
Pronto, seu problema já deve estar resolvido.
Se tiver um pouquinho mais de tempo, vamos juntos tentar entender o que foi que aconteceu.
Primeiro vamos analisar a mensagem de erro. Meu inglês trôpego me permitiu chegar à seguinte tradução da mensagem de erro:
Erro de sintaxe: no arquivo <nome de arquivo.py>, na linha <numero da linha>, tem um caractere não ASCII ('\xc3'), mas não foi declarada nenhuma codificação de caracteres no seu arquivo fonte.
Dê uma olhadinha em http://www.python.org/peps/pep-0263.html para mais detalhes.
Bem, para nós que não somos bilíngües, qualquer tradução capenga vai bem, até mesmo a minha.
Entendi que você colocou um caractere inexistente na tabela ASCII, usada pelo interpretador python ao analisar o código fonte, e esqueceu-se de avisar ao interpretador para usar outra tabela.
O link sugerido na mensagem de erro nos leva à pagina do Python Enhancement Proposals (PEPs) 0263 – pep-0263 (Propostas de Melhoria para o Python, na minha tradução).
Olhando nesta página, obtive as seguintes informações:
- a pep-0263 propõe introduzir uma sintaxe para declarar a codificação usada no arquivo fonte.
- na versão 2.1 do python, o único jeito de escrever ‘literais’ Unicode era ranheta demais.
- neste ‘pep’ é proposto usar um comentário especial no topo da linha par indicar o ‘encoding’ usado.
- o interpretador python irá usar ASCII como codificação se nenhuma outra for informada
O documento indica pelo menos três formas de se indicar a codificação:
# coding=<encoding name>
ou, (usando formatos reconhecidos pelos editores mais populares):
#!/usr/bin/python
# -*- coding: <encoding name> -*-
ou
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
Testei as três formas e funcionou – uso o editor gvim. Testei também substituir utf-8 por iso8859-1, e o interpretador não reclamou.
15 / Julho / 2008 às 2:01 pm
Dicas aparentemente simples mas que fazem toda a diferença, muito obrigado por esta dica!!!!