gpt4 book ai didi

Python Qt QLineEdit 奇怪的编码

转载 作者:行者123 更新时间:2023-12-01 05:05:36 27 4
gpt4 key购买 nike

我遇到了一个让我困惑的情况。我的界面中有一个 QLineEdit,所以当我用以下文本填充它时 𐡀𐡌𐡓 𐡊𐡓' 𐡓𐡁 𐡀𐡁𐡓𐡄𐡌 𐡏𐡋(它是阿拉姆语)并且我在计算机上安装了正确的字体,因此我可以在浏览器中看到这些字体以及除这些字体之外的所有字体必须自己安装,所以你可能会看到一些奇怪的字符。

self.editor = QtGui.QLineEdit(self)
self.editor.setText(𐡀𐡌𐡓 𐡊𐡓' 𐡓𐡁 𐡀𐡁𐡓𐡄𐡌 𐡏𐡋)

因此,在用户界面的编辑器字段中,我可以正确地看到文本,但是当我尝试重新提取该文本时,我得到了一些奇怪的东西:

editor_text = self.editor.text()

这里我得到一个异常(exception):

print(editor_text)
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud802' in position 0:
surrogates not allowed

pprint(editor_text)
"\ud802\udc40\ud802\udc4c\ud802\udc53 \ud802\udc4a\ud802\udc53' "
'\ud802\udc53\ud802\udc41 '
'\ud802\udc40\ud802\udc41\ud802\udc53\ud802\udc44\ud802\udc4c '
'\ud802\udc4f\ud802\udc4b'

我尝试这样做:

editor_text = self.editor.text().encode(encoding='utf-8', errors='surrogateescape')
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud802' in position 0:
surrogates not allowed

我能做些什么来解决这个问题,谢谢

编辑:

我当然添加了标题

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

最佳答案

  1. 将其添加到源 header :

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    您可以阅读此帖子:PEP Index

  2. 在您的阿拉姆语字符串中,将“u”添加到上面的 Python 字符串中,以便在 unicode 模式下使用,如下所示:

    u' ܐܪܡܝܐ‎ '

    u'Unicode String'

完成的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtCore, QtGui
class exampleQMainWindow (QtGui.QMainWindow):
def __init__ (self):
super(exampleQMainWindow, self).__init__()
testQLineEdit = QtGui.QLineEdit(self)
testQLineEdit.setText(u'ܐܪܡܝܐ‎')
print testQLineEdit.text()
self.setCentralWidget(testQLineEdit)

app = QtGui.QApplication([])
window = exampleQMainWindow()
window.show()
sys.exit(app.exec_())

您可以从其他地方获取变量,如下所示:

text = u'ܐܪܡܝܐ‎'
testQLineEdit = QtGui.QLineEdit(self)
testQLineEdit.setText(text)
print testQLineEdit.text()

要强制字符串为 Unicode,您可以使用 unicode(String)

这是返回文本的输出测试类型:

>> print type(unicode(testQLineEdit.text()))
<type 'unicode'>

>> print type(testQLineEdit.text())
<class 'PyQt4.QtCore.QString'>

>> print type(testQLineEdit.text().toUtf8())
<class 'PyQt4.QtCore.QByteArray'>

所有条件都可以在控制台打印。

关于Python Qt QLineEdit 奇怪的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25104333/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com