De vueltas con la codificación.

luis miguel morillas morillas en posta.unizar.es
Mie Mar 30 19:45:33 CEST 2005


	Asunto: [Python-es] De vueltas con la codificación.
	Fecha: mié, mar 30, 2005 at 07:16:32 +0200


Citando a  Victor Peinado (vitojph en gmail.com):
> ¡Hola a todos!
> 
> Me temo que este tema está más que trillado pero es que no hay manera
> de aclararse las tildes, las eñes y el bendito unicode. Os cuento:
>

jeje. Tienes un hilo aquí
http://listas.aditel.org/archivos/python-es/2004-October/thread.html#10667

He escrito unas líneas que te pueden ayudar
http://155.210.85.193:8010/ccia/nodes/2005-03-30/unicodeerror?xslt=/akara/akara.xslt

Saludos,
 
> Estoy parseando un archivo XML con xml.sax y guardo la estructura en
> un diccionario de diccionarios para su posterior procesado. Hasta aquí
> sin problemas. El archivo XML que parseo está en iso-8859-15, que es
> la codificación base que uso en mi ordenador (Ubuntu Hoary). Leo en
> «Dive into Python» que «cuando Python analiza un documento XML, todos
> los datos se almacenan en memoria como unicode» y así parece, porque
> las cadenas que aparecen en mi diccionario están en unicode.
> 
> Cuando trato de imprimir el resultado por salida estándar
> (concretamente, quiero imprimir el resultado en otro XML), el programa
> me casca con el siguiente error:
> 
>   File "mergeDict.py", line 288, in main
>     sys.stdout.write("""<entry lemma="%s">""" % entry)
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in
> position 21: ordinal not in range(128)
> 
> En el ejemplo, la variable 'entry' contiene la cadena u'invenci\xf3n'
> (invención) y tal cual no se puede imprimir con sys.stdout.write
> aunque se soluciona provisionalmente utilizando un simple print (he
> leído que print convierte a ascii
> todo lo que le echen).
> 
> ¿Qué tendría que hacer para imprimir en unicode directamente y
> utilizar sys.stdout.write para poder redirigir la salida? ¿Tengo que
> reconvertir todas las cadenas con el método encode("iso-8859-15")
> antes de imprimir? No soy muy partidario de pasar todo mi sistema a
> unicode hasta que el resto de los mortales lo use de manera habitual,
> ¿hay alguna forma de especificarle a xml.sax que cualquier unicode sea
> tratado iso-8859-15 y dejar de darse cabezazos con la codificación?
> ¿Cómo os enfrentáis habitualmente vosotros con estos problemas?
> 
> Siento dar la tabarra. Muchas gracias de antemano y saludos.
> 
> -- 
> Víctor Peinado || <vitojph /> || http://nlp.uned.es/~victor
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es

-- 

Luis Miguel

No a las patentes de software en Europa
EuropeSwPatentFree
http://EuropeSwPatentFree.hispalinux.es




Más información sobre la lista de distribución Python-es