2010-11-25 18 views
8

QPlainTextEditフィールドには、各国語文字(iso-8859-2)を含むデータがあります。私はQStringを含む変数からUnicodeを作成する

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

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

私の代わりに国別文字の疑問符を取得します。 QPlainTextEditフィールドのデータをUnicodeに正しく変換するにはどうすればよいですか?

+0

について。 – Philipp

+0

ヒントをお寄せいただきありがとうございます。 投稿を変更するための目安 – rapid

答えて

3

QPlainTextEdit.toPlainText()はQStringをUTF-16にする必要がありますが、unicode()コンストラクタではバイト文字列が必要です。以下の小さい例である:

field.toPlainText: китайскийэто試験OA:最主要的

UTF-16:試験OAэтокитайский

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') 

このコードは、次の出力を生成します:最主要的

ISO 8859-2:testÄÄ??? ?????????: ????このことができます

希望、私の知る限り、 `QString`はUTF-16を使用していますので、あなたはそれを試してみてください

+0

正常に動作します。しかし、もう一つ質問があります.tmp変数(iso 8859-2)を符号化形式で送る必要があるとしましょう。 b64encode(tmp)とそれ以降のb64decode(tmp)は各国文字で正しく動作しますか?私のために多くのエンコード/デコードが行われているようですが、私はそれを必要とし、いつも苦しい経験でした。 – rapid

+0

えええええええええええええええええええええええええええええええええええええええええええええええええ私はそこに可能な他の方法はないと思う –

関連する問題