我不能简单地打印包含特殊字符的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或其他对象。
我可以使用
toUtf8()
:您的内部数据应该是Unicode,因此您应该使用
u'éé'
,而不是像您在问题中所说的那样使用'éé'
。你的评论甚至说u'éé'
。更新:抱歉,除非使用特定编码,否则无法保证在Unicode对象上打印或
str()
操作。打印流接受字节数组/bytestrings,并且Unicode对象上的str()正在有效地尝试将Unicode转换为字节数组/bytestring。你不能避免字节数组!尝试以下操作:
# -*- coding: utf-8 -*-
魔法注释(详细信息here)下面是一个对我有用的例子
返回:
希望这有帮助,问候
相关问题 更多 >
编程相关推荐