[pyar] Codificación de archivos...

Mauricio Baeza mauricio en correolibre.net
Mar Jul 12 16:49:40 ART 2011


El mar, 12-07-2011 a las 16:39 -0300, Alejandro Santos escribió:

> 2011/7/9 Mauricio Baeza <mauricio en correolibre.net>
> >
> > Me respondo a mi mismo por si a alguien le sirve...
> >
> > El Notepad de Window le agrega un BOM al archivo al guardar como UTF-8: http://es.wikipedia.org/wiki/Marca_de_orden_de_bytes_%28BOM%29
> >
> > El script de Python modificado quedaría así para lograr esto:
> >
> > # python
> > import codecs
> >
> > path='original.xml'
> > path2='original_ok.xml'
> >
> > f= open(path, 'rb')
> > content= f.read()
> > f.close()
> > f= open(path2, 'wb')
> > f.write( codecs.BOM_UTF8 )
> > f.write(content.encode('utf-8'))
> > f.close()
> >
> 
> Mauricio,
> 
> No deberías hacer un encode de los datos sino simplemente escribirlos
> directamente tal cual están en el archivo.
> 
> La operación de encode solo "tiene sentido" hacerla sobre un string
> Unicode. Si el archivo tiene datos UTF-8 es más que seguro que te va a
> disparar en algún momento un UnicodeDecodeError:
> 
> Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)
> >>> f = open("utf8.txt", "rb")
> >>> a = f.read()
> >>> b = a.encode("utf8")
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position
> 0: ordinal not in range(128)
> 
> Esto mismo en Python 3 te dice que la operación "encode" no existe:
> 
> >>> a.encode("utf-8")
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> AttributeError: 'bytes' object has no attribute 'encode'
> 
> Saludos,
> 
> --
> Alejandro Santos


Muchas gracias por tu comentarios Alejandro...

Fíjate que el script cambio un poco precisamente para leer contenido
unicode, como se usa en python2 por ahora todo bien, pero lo
consideraré...


Saludos



-- 
__________________________________
Mauricio Baeza Servín
Universo Libre México, A.C.
Fundador y Director General
www.universolibre.org
Todo lo que no podemos dar nos posee... Andre Gide
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110712/cb2672d8/attachment.html>


More information about the pyar mailing list