我沒有設法簡單地打印一個包含特殊字符的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