2016-02-28 99 views
0

我無法使PyQt正確顯示帶有特殊字符的字符串。從拖放動作中,我最終得到的文件名爲QString,可能包含一個空格或一個醜陋的德語UmlautePyQt QString掩碼特殊字符並且不能正確顯示

爲簡單起見,我們考慮這是我想要處理的文件名:'abc defä.ghi',生成的QString I得到是'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() 

沒有什麼似乎工作,我害怕我失蹤的明顯。

回答

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 
+0

其實它不是來自互聯網,但是從Windows資源管理器拖放文件到QListWidget一個拖放結果。我完全錯過了從QByteArray的PerceenEncoding方法。我對'%'符號有點困惑,但顯然並沒有完全想到這一點 – MichaelA