从包含 QString 的变量中生成 unicode

发布于 2024-10-04 10:46:00 字数 268 浏览 3 评论 0原文

我有 QPlainTextEdit 字段,其中包含包含国家字符(iso-8859-2)的数据。

tmp = self.ui.field.toPlainText() (QString type)

当我这样做时:

tmp = unicode(tmp, 'iso-8859-2') 

我得到的是问号而不是国家字符。如何将 QPlainTextEdit 字段中的数据正确转换为 unicode?

I have QPlainTextEdit field with data containing national characters (iso-8859-2).

tmp = self.ui.field.toPlainText() (QString type)

When I do:

tmp = unicode(tmp, 'iso-8859-2') 

I get question marks instead of national characters. How can I convert properly the data in QPlainTextEdit field to unicode?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反差帅 2024-10-11 10:46:00

正如所说,QPlainTextEdit.toPlainText() 返回应该是 UTF-16 的 QString,而 unicode() 构造函数需要一个字节字符串。下面是一个小示例:

tmp = self.field.toPlainText()
print 'field.toPlainText: ', tmp

codec0 = QtCore.QTextCodec.codecForName("UTF-16");
codec1 = QtCore.QTextCodec.codecForName("ISO 8859-2");  

print 'UTF-16: ', unicode(codec0.fromUnicode(tmp), 'UTF-16')
print 'ISO 8859-2: ', unicode(codec1.fromUnicode(tmp), 'ISO 8859-2')

此代码产生以下输出:

field.toPlainText:测试 Öä это
китайский: 支出的

UTF-16: 测试 Öä это китайский: 开头的

ISO 8859-2:测试 Öä ??? ?????????:
????

希望这有帮助,问候

As it was said QPlainTextEdit.toPlainText() returns QString which should be UTF-16, whereas unicode() constructor expects a byte string. Below is a small example:

tmp = self.field.toPlainText()
print 'field.toPlainText: ', tmp

codec0 = QtCore.QTextCodec.codecForName("UTF-16");
codec1 = QtCore.QTextCodec.codecForName("ISO 8859-2");  

print 'UTF-16: ', unicode(codec0.fromUnicode(tmp), 'UTF-16')
print 'ISO 8859-2: ', unicode(codec1.fromUnicode(tmp), 'ISO 8859-2')

this code produces following output:

field.toPlainText: test ÖÄ это
китайский: 最主要的

UTF-16: test ÖÄ это китайский: 最主要的

ISO 8859-2: test ÖÄ ??? ?????????:
????

hope this helps, regards

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文