[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