python - documentacion - pyqt signal emit
¿Cómo puedo imprimir un QString que contenga un carácter especial con Python usando PyQt? (2)
Funciona para mí usando toUtf8()
:
>>> s = u''éé''
>>> qs = QString(s)
>>> qs
PyQt4.QtCore.QString(u''/xe9/xe9'')
>>> print qs
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: ''ascii'' codec can''t encode characters in position 0-1: ordinal not in range(128)
>>> print qs.toUtf8()
éé
>>>
Sus datos internos deben ser Unicode, por lo que debe usar u''éé''
lugar de simplemente ''éé''
como indicó en su pregunta. Tu comentario incluso dice u''éé''
.
Actualización: Lo sentimos, pero no se puede garantizar que la impresión o str()
en Unicode funcione en objetos Unicode a menos que use una codificación específica. Las secuencias de impresión aceptan matrices de bytes / cadenas de bytes, y str () en un objeto Unicode está intentando efectivamente convertir Unicode en una matriz de bytes / bytes. ¡No podrás evitar matrices de bytes!
No logré simplemente imprimir una variable QString que contenga un carácter especial.
Siempre obtengo un UnicodeEncodeError:
El códec ''ascii'' no puede codificar caracteres en posición ...
Aquí está el código que probé sin éxito:
var1 = "éé" #idem with u"éé"
var2 = QString (var1)
print var2
--->>> UnicodeEncodeError
print str(var2)
--->>> UnicodeEncoreError
var3 = QString.fromLocal8Bit (var1) #idem with fromLatin1 and fromUtf8
print var3
--->>> UnicodeEncodeError
codec = QTextCodec.codecForName ("UTF-8") #idem with ISO 8859-1
var4 = codec.toUnicode (var2.toUtf8().data()) #idem with toLatin1 instead of toUtf8
print var4
--->>> UnicodeEncodeError
También traté de usar:
QTextCodec.setCodecForCStrings(QTextCodec.codecForName("UTF-8"))
Realmente necesito imprimir una variable QString, no un QByteArray u otro objeto.
intente seguir:
- agregue
# -*- coding: utf-8 -*-
comentario mágico al comienzo de su script (detalles aquí ) - usa declaración de cadena "u" con tu constante de cadena
a continuación hay un ejemplo que funciona para mí
# -*- coding: utf-8 -*-
from PyQt4 import QtCore
var1 = u"éé" #idem with u"éé"
print var1
var2 = QtCore.QString(var1)
print var2
var3 = QtCore.QString(u"éé")
print var3
devoluciones:
éé
éé
éé
espero que esto ayude, saludos