martes, agosto 16, 2005

Python, xml y unicode


Sobre este tema hace unos dias puse un par de links. Ya he tenido tiempo de leerlos y son recomendables.

De el Python Unicode Tutorial esta interesante el ejemplo de recoder de latin-1 a utf-8:



import codecs
#Encoding / decoding functions

def encode(latin1_data):
return unicode(latin1_data,'latin-1').encode('utf-8'),len(latin1_data)

def decode(utf8_data):
return unicode(utf8_data,'utf-8').encode('latin-1'),len(utf8_data)

#StreamCodecs

class Codec(codecs.Codec):
def encode(self,latin1_data):
return encode(latin1_data)
def decode(self,utf8_data):
return decode(utf8_data)

class StreamWriter(Codec,codecs.StreamWriter):
pass

class StreamReader(Codec,codecs.StreamReader):
pass

#Codec registry entry point

def getregntry():
return(encode,decode,StreamReader,StreamWriter)



Y aquí podemos ver un ejemplo de uso.

Con respecto al default encoding de unicode, parece que en sys puede existir, o en algún momento ha existido la función setdefaultencoding. Pero al menos en mi distribución no viene.
De todas formas si queremos probar a cambiar el encoding por defecto, lo que podemos hacer es cambiar el valor de la variable encoding de site.py.

No hay comentarios: