[pyar] problema con sockets (solucionado)

Facundo Batista facundobatista en gmail.com
Jue Mayo 23 08:51:18 ART 2013


2013/5/23 Miguel Barraza <correo en miguelbarraza.com.ar>:

> leo el socket y guardo el texto recibido en la variable:
> data= self.request.recv(1024)
> luego lo decodifico:
> data=data.decode('iso-8859-15')

Che, ¿estás seguro que los datos por el socket te vienen en Latin-9?
No está mal, pero es raro.


> proceso luego el resultado que debo responder y luego envío el mensaje:
> pero antes lo codifico a UTF-8:
> msg=msg.encode('utf-8')
> y lo envío.
> self.request.send(msg+"\n")

Esto está perfecto.

Una pregunta, vos mandás esto en UTF-8... del otro lado, ¿quien lo
lee? ¿sabés como lo está leyendo?

El detalle importante es que UTF-8 es "multibyte". Entonces, si del
otro lado se está haciendo algo como lo que hiciste vos...

   data = self.request.recv(1024)
   data = data.decode("utf8")

... entonces *a veces* (y va a ser un error dificil de detectar) la
secuencia multibyte te va a caer cortada (o sea, el primer byte de la
ñ codificada como lo último que se leyó ahí, y el segundo byte que
viene en la próxima lectura), y va a explotar al decodificarse...

Slds!

--
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista



More information about the pyar mailing list