Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: fortil en Enero 07, 2013, 03:43:08 PM

Título: [SOLUCIONADO] 'Ascii' codec can't encode character u'\xe1' in posit
Publicado por: fortil en Enero 07, 2013, 03:43:08 PM
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) [Seleccionar]

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

             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
Título: Re:[Ayuda]UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in posit
Publicado por: WhiZ en Enero 09, 2013, 09:51:44 PM
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) [Seleccionar]

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


Y aquí la salida
Código (python) [Seleccionar]

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


Espero que te sirva!

Saludos!
WhiZ
Título: Re:[Ayuda]UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in posit
Publicado por: fortil en Enero 11, 2013, 01:06:06 AM
gracias WhiZ lo probaré xD