[SOLUCIONADO] 'Ascii' codec can't encode character u'\xe1' in posit

Iniciado por fortil, Enero 07, 2013, 03:43:08 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 07, 2013, 03:43:08 PM Ultima modificación: Septiembre 18, 2014, 09:02:05 PM por Expermicid
hola a todxs

de nuevo yo con mis dudas  ;D me ha costado bastante acostumbrarme a PyQt.

Resulta que tengo el siguiente código
Código: python

txt = str(self.IntroducirTexto.toPlainText())
L = {"Á":"A","É":"E","Í":"I","Ó":"O","Ú":"U","á":"a","é":"e","í":"i","ó":"o","ú":"u"}
l = {"\xc1":"A","\xc9":"E","\xcd":"I","\xd3":"O","\xda":"U","\xe1":"a","\xe9":"e","\xed":"i","\xf3":"o","\xfa":"u"}
for i in txt:
if i in L.keys():
txt = txt.replace(i,L[i])
self.SalirTexto.setPlainText(txt)

En realidad lo que quiero es un programa que convierta las palabras con tildes a palabras sin tildes, pero resulta que eso me funciona en python, pero en PyQt4 no me funciona.
He intentado con los dos diccionarios (l y L) y siempre me arroja un error
este es el error
Código: text

             txt = str(self.IntroducirTexto.toPlainText())
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 3: ordinal not in tange(128)


he intentado poner txt = str(self.IntroducirTexto.toPlainText()).encode('utf-8') o txt = txt.encode('utf-8')
pero ninguna da frutos, sigue apareciendo el mismo error

y cuando uso la codificación que me da el mismo programa txt = _fromUtf8(self.IntroducirTexto.toPlainText()) me salen caracteres super raros en la otra ventana, como este �

les agradezco que me puedan ayudar con esto

El problema es que no se puede utilizar str() sobre QString si éste último tiene acentos.
La solución es usar el método toAscii() de QString.

Acá te dejo el código
Código: python

txt = self.textEdit.text()
print type(txt)
txt = str(txt.toAscii)
print type(txt)


Y aquí la salida
Código: python

<class 'PyQt4.QtCore.QString'>
<type 'str'>


Espero que te sirva!

Saludos!
WhiZ