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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值