[Python-es] problemas cadenas unicode
chakalinux
chakalinux en gmail.com
Mar Feb 1 00:36:43 CET 2011
Buenas, bueno ... vengo con un problema que llevo arrastrando unos días.
Tengo el siguiente problema, me llega una cadena de texto de retorno
(result) y esta no es unicode pero contiene caracteres acentuados, ñ, etc
...
result = profe.SearchQuestion(message, nickname.split("!")[0])
>
> if result:
> s.send("PRIVMSG %s :%s, %s\r\n" % (channel, nick, result))
>
He probado varias cosas para codificar:
s.send(unicode(("PRIVMSG %s :%s, %s\r\n" % (channel, nick, result))))
>
o:
if type(txt) not is unicode: txt = txt.decode("utf-8")
>
>> else: txt = txt.decode("iso-8859-15")
>>
>
s.send("PRIVMSG %s :%s, %s\r\n" % (channel, nick, txt))
El caso es que desde mi entorno IDE cuando lo ejecuto no me casca y si lo
ejecuto en un terminal casca con errores tipo:
Traceback (most recent call last):
File "./irc.py", line 327, in <module>
Irc()
File "./irc.py", line 118, in __init__
s.send((unicode("PRIVMSG %s :%s, %s\r\n" % (channel, nick, result))))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 61:
ordinal not in range(128)
Parece que desde el terminal trata a las cadenas como ascii ! y no tenia por
que ... vamos, no entiendo como en el IDE funciona y en el terminal no.
Uso pydev como IDE y bash para lanzar el programa. Si sirve de algo en las
cabeceras de cada archivo tengo:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
[...]
y esto por se acaso:
$ locale
LANG=es_ES.utf8
LC_CTYPE="es_ES.utf8"
LC_NUMERIC="es_ES.utf8"
LC_TIME="es_ES.utf8"
LC_COLLATE="es_ES.utf8"
LC_MONETARY="es_ES.utf8"
LC_MESSAGES="es_ES.utf8"
LC_PAPER="es_ES.utf8"
LC_NAME="es_ES.utf8"
LC_ADDRESS="es_ES.utf8"
LC_TELEPHONE="es_ES.utf8"
LC_MEASUREMENT="es_ES.utf8"
LC_IDENTIFICATION="es_ES.utf8"
LC_ALL=
Un saludo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110201/cf641796/attachment.html>
Más información sobre la lista de distribución Python-es