【发布时间】:2011-01-07 13:58:11
【问题描述】:
我没有设法简单地打印一个包含特殊字符的 QString 变量。
我总是得到一个 UnicodeEncodeError:
'ascii' 编解码器无法对位置中的字符进行编码 ....
这是我尝试但没有成功的代码:
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 终端,您无法显示非 ascii 字符 - 这与
QString无关。可以print var1吗? -
是的,我可以打印 var1。我只是尝试在运行 python 解释器的 cmd 提示符内打印。我还尝试在 Eclipse 环境控制台中打印,结果相同。我尝试在 Windows 和 Linux 上使用 Python 2.5 和 python 2.7。
-
即使转换 str(var2) 也会出现同样的错误(仅当 var1 然后 var2 包含特殊字符时)