[pyar] problemas con unicode
Facundo Batista
facundobatista en gmail.com
Jue Mayo 23 19:59:45 ART 2013
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.
--
. Facundo
Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista
More information about the pyar
mailing list