[pyar] problema con sockets

Marcelo Fernandez marcelo.fidel.fernandez en gmail.com
Jue Mayo 23 10:03:22 ART 2013


El 23 de mayo de 2013 00:08, Miguel Barraza
<correo en miguelbarraza.com.ar> escribió:
> Subject: Re: [pyar] problema con sockets
>
>
>
> 2013/5/22 Miguel Barraza <correo en miguelbarraza.com.ar>:
>
>> el problema que no logré entender como solucionar es cuando el motor
>> recibe
>> acentos y ñ, lanza un error y cierra la conexión, imagino que es un
>> problema
>> de codificación del texto al enviar el mensaje al cliente encuentra el
>> error
>> y cierra la conexión.
>> por lo visto, el mensaje lo recibe pero no logro entender porque lanza el
>> error. en teoría debería funcionar bien por mas que tenga o no acentos.
>
>
> <<¿Cómo estás mandando un caracter unicode por el socket? O sea, tenés
> la eñe, ¿cómo la escribiste por un lado y cómo la leiste por el otro?>>
>
> entiendo que por ese lado anda el error, pero no veo donde.
> leo el socket y guardo el texto recibido en la variable:
> data= self.request.recv(1024)
> luego lo codifico:
> data=data.encode('iso-8859-15')
> probé tambien con utf-8 y me dio el mismo resultado.
> proceso luego el resultado que debo responder y luego envío el mensaje:
> self.request.send(msg+"\n")
> en msg tengo el texto que responde el motor.
>
> esto me lanza errores cuando recibo mensajes con acentos y ñ.
>
> debo codificarlo de otra forma?.

Hola Miguel,

No leí el código, pero guiándome por lo que contás, cuando vas a
escribir al socket al enviar un mensaje, debés "encodear" (es decir,
pasar de Unicode a una codificación en particular, por ejemplo,
utf-8), mediante el método encode(); y del otro lado, al recibir el
mensaje, debés "decodear" (pasar de una codificación a Unicode para
seguir trabajando), con el método decode().

O sea, que según lo que explicás estás haciendo mal la recepción del
mensaje (y habría que chequear o agregar que hagas el encode() en el
envío).

Te recomiendo que veas la presentación de Facundo sobre "Entendiendo Unicode":

http://www.taniquetil.com.ar/homedevel/presents/unicode.odp
http://www.youtube.com/watch?v=pQJ0emlYv50

Saludos
--
Marcelo F. Fernández
Buenos Aires, Argentina
Lic. en Sistemas de Información

E-Mail: marcelo.fidel.fernandez en gmail.com
Blog: http://blog.marcelofernandez.info
Twitter: http://twitter.com/fidelfernandez



More information about the pyar mailing list