使用Qstring時候碰到的一個bug

if str(self.btn_name.text()).lower == "empty ":

這是代碼最早的寫法,問了下寫這代碼的人,才知道這邊加上str是因爲.btn_name.text()的結果是Qstring,需要str轉換爲string類型,這樣才能調用lower方法。

後來我發現Qstring好像也有lower的方法。

lower後面少了(),可能是疏忽吧。

但是這句話還是報錯:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)

明顯是編碼問題了。


google了一番說Qstring是unicode的,‘empty’是char類型的

所有想用toAscii()轉換爲ASCII,但是網上找到的質料都說會報錯。

而且網絡上的質料都是想辦法把中文顯示出來而已,和我的目標不太一樣。

後來聽同事說u'aaa' 和‘aaa’比較是相等的,所以直接用unicode和ascii比較:


於是用下面的方法把中文轉換爲utf8編碼的字符串,然後調用lower()

if unicode(self.btn_name.text().toUtf8(), 'utf8', 'ignore').lower() == 'empty':

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章