从包含QString的变量中创建unicode

时间:2010-11-25 21:57:44

标签: python qt qt4 pyqt

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

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

当我这样做时:

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

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

1 个答案:

答案 0 :(得分: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:测试ÖÄэтокитайский:最主要的

     

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

希望这有帮助,尊重