[pyar] otra vez UNICODE...?
Roberto Alsina
ralsina en netmanagers.com.ar
Mar Abr 26 10:49:15 ART 2011
On 4/26/2011 10:26 AM, Alan Jonatan Romero wrote:
> Hola chic en s. Como estan? Les tengo que confesar una barbaridad...
> llevo un par de años programando en Python pero... nunca pude
> comprender del todo el tema del unicode, por no decir que no lo
> "comprendi del nada" directamente... Ya me sé la historia, los
> encodings que existen como ANSI, LATIN1, UTF-8, UTF-16, se que el tema
> está RECONTRA tratado... He leído el tema muchísimas veces googleando,
> buscando por todos lados (incluso en las docs de python) y no hay caso
> con que pueda entender cuándo usar un
>
> "unicode(cadena, 'utf-8')",
>
> un
> "cadena.encode(utf-8)"
>
> o un
> "cadena.decode('utf-8)"
>
> Repito, llevo años tratando de entender el tema y hasta ahora no tuve
> más remedio que esquivar el unicode y no poner acentos o ñ's, sólo
> usaba el u'ñoquis' porque sé que funciona, pero en este momento tengo
> este programa en el que necesito estar preparado para cualquier
> caracter que venga, en cualquier máquina y cualquier
> carpeta/directorio, a prueba de giles y toda la cosa, porque estoy
> trabajando y trato de mostrar a los visualeros de mis compañeros que
> python tiene los pantalones bien puestos y que se pueden hacer cosas
> bien chetas... :P
>
> Asi que bueno, aqui está el código, y se los adjunto. Les comento que
> uso Geany, Python 2.7, modulos: xlrd, xlwt (que no se ven en este
> código), wxPython... y desgraciadamente estoy programando en windows
> xp... Pero bueno, hay que hacerlo. Lo que pido es que me "dejen
> andando" este script y me expliquen que corno fue lo que no entendí
> del uso de unicode...
Las reglas que yo uso en mi cabeza (basadas en la famosa charla de
Facundo) son:
1) Tratá de tener objetos unicode en tu código. Eso quiere decir
u'cosa', no 'cosa'.
2) Si otro código te da strings, decodealas para tener unicode:
'cosa'.decode('elencodingquecorresponda'). Eso quiere decir que TENÉS
que saber en que encoding vienen. No asumir utf-8 a ciegas.
3) Si otro código te pide strings, encodealas al encode que necesita:
u'cosa'.encode('elencoding'). Eso quiere decir que TENÉS que saber que
encoding tenés que darles. No asumir utf-8 a ciegas.
Y listo.
More information about the pyar
mailing list