PyQt QString掩盖特殊字符,无法正确显示

时间:2016-02-28 21:40:47

标签: python pyqt qstring

我无法让PyQt正确显示带有特殊字符的字符串。从拖放动作开始,我最终得到的文件名为QString,可能包含空格或丑陋的德国元音之一

为简单起见,我们考虑这是我想要处理的文件名:'abc defä.ghi',得到的QString是'abc%20.def%C3%A4.ghi'。我现在只想打印原始字符串:

from PyQt4.QtCore import QString, QTextCodec, QTextDecoder
s = QString('abc%20.def%C3%A4.ghi')
print s, unicode(s), s.toUtf8()

似乎什么都没有用,我担心我会错过这个显而易见的事情。

1 个答案:

答案 0 :(得分:2)

不确定您从哪里获取数据,但它显然不是UTF-8编码的。它是百分比编码的 - 所以从互联网上,不知何故?

无论如何,它应该在python2中解码:

>>> b = QtCore.QByteArray.fromPercentEncoding('abc%20.def%C3%A4.ghi')
>>> b.data()
'abc .def\xc3\xa4.ghi'
>>> s = b.data().decode('utf8')
>>> print s
abc .defä.ghi