Python String和PyQt QString的区别

兄弟姐妹在线求帮请问下,Python String和PyQt QString的区别
最新回答
山河不入梦

2024-10-18 09:16:18

您好,很高兴为您解答。

以下在 Python2.6和PyQt4.4.4 for Python2,6环境下讨论:
Python中有两种有关字符的类型:Python string object和Python Unicode object。主要使用Python string object进行数据输入输出。
PyQt中与之相对应的字符有关类型是:QByteArray和QString。主要使用QString操作数据。

1)Python string object是原始编码是有区分的,通过 decode('原始编码') 解码得到utf16类型即Python Unicode object。Python Unicode object原始编码固定是utf16,通过 encode('目的编码') 编码来得到Python string object。
2)对于英 文,PyQt函数需要QString参数的地方都可以直接用Python string object或者Python Unicode object。对于中文,利用unicode()函数显示指定gb2312编码进行中文编码转换,转换后的Python Unicode object可以直接作为QString参数代入。
unicode('中 文', 'gb2312', 'ignore')
3)对于英文,可以使 用unicode()直接将QString转换为Python Unicode object,并进一步encode()得到Python string object,也可以使用str()函数直接将QString转换为Python string object。对于中文,利用unicode()指定原始编码gbk来解决QString转换为Python Unicode object问题,但对于GUI使用仍有缺陷,不过无碍;进一步利用encode('gb2
312')得到Python string object,或者结合QString的toUtf8()再利用str()函数;但对于GUI编程str()方法还是不行,只可结合QString的 toUtf8()进行unicode()转换后再利用encode('gb2
312')。
str(QtCore.QString(' 中文').toAscii())
unicode(QtCore.QString('中文'),'gbk','ignore').encode('gb2312')
myText = unicode(self.myLineEdit.text().toUtf8(),'utf8', 'ignore').encode('gb2312')

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~ O(∩_∩)O~