我没有设法简单地打印一个包含特殊字符的QString变量。
我总是得到一个UnicodeEncodeError:如何使用PyQt打印包含特殊字符的QString?
'ascii' codec can't encode characters in position ....
这里是我尝试没有成功代码:
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
我还试图用:
QTextCodec.setCodecForCStrings(QTextCodec.codecForName("UTF-8"))
我真的需要打印QString变量,而不是QByteArray或其他对象。
你在哪里打印到?如果你是例如使用ascii-only终端,你不能显示非ascii字符 - 这与`QString`无关。你能打印var1吗? – delnan 2011-01-07 14:08:10
是的,我可以打印var1。我只是尝试在运行python解释器的cmd提示符内进行打印。我也尝试在Eclipse环境控制台中打印相同的结果。我在Windows和Linux上使用Python 2.5和Python 2.7进行了尝试。 – oaimac 2011-01-07 14:45:25
即使转换str(var2)也给出相同的错误(只有当var1和var2包含特殊字符时) – oaimac 2011-01-07 14:47:48