从包含QString的变量生成unicode

8 投票
1 回答
2953 浏览
提问于 2025-04-16 07:37

我有一个QPlainTextEdit文本框,里面的数据包含一些国家字符(使用的是iso-8859-2编码)。

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

当我执行:

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

我看到的却是问号,而不是那些国家字符。我该怎么做才能把QPlainTextEdit文本框里的数据正确转换成unicode格式呢?

1 个回答

3

正如所说,QPlainTextEdit.toPlainText() 返回的是一个 QString,这个字符串应该是 UTF-16 编码,而 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: test ÖÄ это китайский: 最主要的

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

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

希望这能帮到你,祝好

撰写回答