Mudando a codificação do Python

187 views
Skip to first unread message

MAYRON

unread,
Jan 27, 2008, 8:11:42 AM1/27/08
to DJangoBrasil, Python-Brasil
Olá pessoal,

Estou tentando mudar a codificação do python pois estou com problemas com o Unicode, mais quando vou executar o comando setdefaultencoding está dando erro...

>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> sys.setdefaultencoding('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'setdefaultencoding'

Segui essa dica[1] certinha mais quando chegou na parte desse comando.....

[1] http://cept.faprender.org/?p=18

--
Mayron Cachina Santiago
http://cachina.wordpress.com

Luiz T. Honda

unread,
Jan 27, 2008, 8:34:52 AM1/27/08
to django...@googlegroups.com
Mayron,

Posso dizer que pelo menos no Python 2.5.1, o metodo
setdefaultencoding nao existe no modulo sys.

Colocando :

# -*- coding: utf-8 -*-

no comeco dos seus scripts deve funcionar.

[]s

Honda

--
http://luizhonda.wordpress.com/

MAYRON

unread,
Jan 27, 2008, 8:42:35 AM1/27/08
to django...@googlegroups.com
Luiz,

Já coloquei em todos os scripts .py e n adiantou, acho que realmente tenho que fazer mudar essa codigicação ascii, ainda está dando o mesmo problema. e por que o getdefaultencoding() existe e não o set?! é fogo né hehehehehehe

DjangoUnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128). You passed in DjangoUnicodeDecodeError('ascii', 'Lu\xc3\xadz', 2, 3, 'ordinal not in range(128)') (<class 'django.utils.encoding.DjangoUnicodeDecodeError'>)

Luiz T. Honda

unread,
Jan 27, 2008, 10:48:12 AM1/27/08
to django...@googlegroups.com
Mayron,

Desculpe, eu errei feio!

No http://docs.python.org/lib/module-sys.html tem o metodo setdefaultencoding.

Parece que o metodo eh removido apos ser usado pelo modulo site.

Eu fui no shell do python e fiz:

import sys
dir(sys)

e procurei pelo metodo. Como nao tinha encontrado, mandei o email p/ voce.

Veja a documentacao do link acima, acho que pode resolver o problema.

[]s

Honda

--
http://luizhonda.wordpress.com/

Daniel Martins

unread,
Jan 29, 2008, 10:19:47 AM1/29/08
to django...@googlegroups.com


Isso já tava me dando nos nervos. :-P

Vocês já estão no caminho certo, passei por essa parte de procurar e não achar o sitecostumize.py, o arquivo certo na versão 2.5 é site.py aqui fica em /usr/local/lib/python2.5/site-packages/site.py .

Dei um googlada e resolvi o problema da seguinte forma.

Eu não queria mexer nesses arquivos digamos do "core", pois pode causar "efeitos colaterais" , procurei outra solução, que deu certo nesse momento pra mim:

coloquei no __init__ do meu projeto o seguinte:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

pq como é deletado, basta um reload que carrega o método novamente, não entendi muito bem mas ele dá um "del sys.setdefaultencoding " pois há algumas "tretas" quando o python é carregado pra execução como script, vide comentário no site.py
"""
 # Remove sys.setdefaultencoding() so that users cannot change the
 # encoding after initialization.  The test for presence is needed when
 # this module is run as a script, because this code is executed twice.
"""
 
Espero que funcione pra você também.

Regards,
--
Daniel Martins E. dos Santos
"Ciência da computação está tão relacionada aos computadores quanto a Astronomia aos telescópios, Biologia aos microscópios, ou Química aos tubos de ensaio. A Ciência não estuda ferramentas. Ela estuda como nós as utilizamos, e o que descobrimos com elas." (Edsger W. Dijkstra)

MAYRON

unread,
Jan 29, 2008, 5:32:54 PM1/29/08
to django...@googlegroups.com
> coloquei no __init__ do meu projeto o seguinte:

> import sys
> reload(sys)
> sys.setdefaultencoding("utf-8")

ATÉ QUE ENFIM!!!!!!!!!!!!!!!!!!!!!!!!!!!
vlw Daniel!!!!!!!!!
Reply all
Reply to author
Forward
0 new messages