使用Qstring时候碰到的一个bug

来源:互联网 发布:网络黑市论坛 编辑:程序博客网 时间:2024/05/19 17:02

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':

原创粉丝点击