PyQt QString 屏蔽特殊字符,显示不正确

PyQt QString masks special characters and does not display correctly

我无法让 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()

似乎没有任何效果,恐怕我错过了显而易见的东西。

不确定您从哪里获取数据,但它显然不是 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