[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