[pyar] problemas con unicode

Juan Carlos Ojeda juancarlospaco en gmail.com
Jue Mayo 23 21:37:25 ART 2013


2013/5/23 Facundo Batista <facundobatista en gmail.com>

> 2013/5/23 Miguel Barraza <correo en miguelbarraza.com.ar>:
>
> >>>> l=['hola','¿cómo?']
> >>>> print l[0].encode('utf-8')
> >
> > hola
> >>>>
> >>>> print l[1].encode('utf-8')
> >
> > Traceback (most recent call last):
> >  File "<pyshell#7>", line 1, in <module>
> >    print l[1].encode('utf-8')
> > UnicodeDecodeError: 'ascii' codec can't decode byte 0xbf in position 0:
> > ordinal
> > not in range(128)
>
> Fijate una de las *grandes* reglas de mi charla: nunca, NUNCA, pongas
> caracteres no ascii en un string que no sea Unicode.
>
> Sacando dos negaciones: SIEMPRE poné caracteres no-ascii en strings
> Unicode.
>
> Tu mismo ejemplo:
>
> >>> l = [u"hola", u"¿cómo?"]
> >>> print l[0].encode("utf8")
> hola
> >>> print l[1].encode("utf8")
> ¿cómo?
>
> Sin embargo, eso te puede confundir. Mejor con repr()
>
> >>> print l
> [u'hola', u'\xbfc\xf3mo?']
> >>> print repr(l[0].encode("utf8"))
> 'hola'
> >>> print repr(l[1].encode("utf8"))
> '\xc2\xbfc\xc3\xb3mo?'
>
> Ahí se ve clarito como que lo que tenés en la lista es una cadena
> Unicode, y luego de encodearla tenés una secuencia de bytes.
>
> Y, en general, todos tus textos deberían ser Unicode (tengan
> caracteres no ascii o no), porque son *textos*, no secuencia de bytes.
>
> Slds.




50% Off Topic pero AFAIK

"\n" no es nueva linea siempre, por eso cambialo por:

from os import linesep
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130523/286de0f7/attachment.html>


More information about the pyar mailing list