[pyar] Codecs, UTF-8

Martin Cerdeira martincerdeira en gmail.com
Mar Oct 12 20:12:39 ART 2010


2010/10/12 Facundo Batista <facundobatista en gmail.com>:
> 2010/10/12 Martin Cerdeira <martincerdeira en gmail.com>:
>
>> Porque lo corrí con un open(fname), y saqué el resto.
>> Voy a hacer más pruebas (con más tiempo) y voy a poner los resultados. Gracias!
>
> Ok, mostrá el código, y el error que te da (no la última linea, sino
> el traceback completo).
>
> Slds.
>
> --
> .    Facundo
>
> Blog: http://www.taniquetil.com.ar/plog/
> PyAr: http://www.python.org/ar/
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>

Me pude poner (con tiempo) a ver el problema y, como todo, con tiempo
las cosas son más claras =)

Este es el trace completo del error actual:

E:\HOME\Python\Qt\Html>main.py
Traceback (most recent call last):
  File "E:\HOME\Python\Qt\Html\main.py", line 22, in on_FileOpen_triggered
    self.web.setHtml(codecs.open(fname, "r", "utf-8" ).read())
  File "C:\Python26\lib\codecs.py", line 865, in open
    file = __builtin__.open(filename, mode, buffering)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf3 in position 24: ordinal
 not in range(128)

Ahora, a raiz de que me dijiste que era imposible que diera el error
con el open, me puse a ver otras cosas y, noté algo que no había
notado. El path al archivo tiene un tilde. Es decir:

fname = QtGui.QFileDialog.getOpenFileName(self, filter="*.html")
print fname

Falla si la carpeta se llama, por ejemplo, "Computación"

No entiendo exactamente por qué falla, ya que le estoy poniendo que es
utf-8. A lo sumo, fname debería tener la palabra computación con un
caracter raro en vez de la ó. O, eso es lo que esperaría, pero no.

Entonces, seguí con más pruebas:

# -*- coding: utf-8 -*-
string = "ñandú"
print string

±and·

# -*- coding: iso-8859-15 -*-
string = "ñandú"
print string

±and·

# -*- coding: latin-1 -*-
string = "ñandú"
print string

±and·

# -*- coding: iso-8859-1 -*-
string ="ñadú"
print string

±and·

Luego:

# -*- coding: utf-8 -*-
string ="ñandú"
print unicode(string,"latin1")

ñandú

Hay una forma *mejor* de hacer esto??

-------------------------------------
Martín Cerdeira - Software Developer
[web] http://www.codmacs.blogspot.com/
()  ascii ribbon campaign
/\  www.asciiribbon.org



More information about the pyar mailing list