我正在尝试从可能包含Unicode转义序列的QLineEdit中读取文本序列,并将其打印到QLabel并在PyQt5和Python 3.4中显示正确的字符。
我尝试了很多不同的东西,我在这里阅读了stackoverflow,但找不到适合Python 3的解决方案。
def on_pushButton_clicked(self):
text = self.lineEdit.text()
self.label.setText(text)
现在,如果我这样做:
decodedText = str("dsfadsfa \u2662 \u8f1d \u2662").encode("utf-8")
self.label.setText(text.decode("utf-8")
这会打印出正确的字符。如果我将相同的方法应用于上述方法,我会得到转义序列。 我不知道QLineEdit的text()和str(“\ u2662”)返回的str()之间有什么区别。为什么一个正确编码字符而另一个不编码呢?
答案 0 :(得分:0)
不同之处在于"\u2662"
不是具有Unicode转义的字符串,而是具有Unicode转义的字符串 literal 。具有相同Unicode转义的字符串为"\\u2662"
。
3>> codecs.getdecoder('unicode-escape')('\\u2662')
('♢', 6)