从包含QString的变量生成unicode
我有一个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 ÖÄ ??? ?????????: ????
希望这能帮到你,祝好