2011-06-28 10 views
4

私はUnicode文字列に変換して、文字列を標準文字列に変換しようとしていますが、成功しません。私が持っているQString:Unicodeのエンコーディングデコードの問題

PyQt4.QtCore.QString(u'\xc5\x9f')

私がしたい:'\xc5\x9f'通知STR型ではないUnicodeを、私は使用していますライブラリはユニコードを受け付けていませんので。ここで

は、私が試したものです、あなたは私が:)午前どのように絶望的見ることができます。

>>> s = QtCore.QString(u'\xc5\x9f') 
>>> str(s) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) ' 
>>> s.toUtf8() 
PyQt4.QtCore.QByteArray('\xc3\x85\xc2\x9f') 
>>> s.toUtf8().decode("utf-8") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'QByteArray' object has no attribute 'decode' 
>>> str(s.toUtf8()).decode("utf-8") 
u'\xc5\x9f' 
>>> str(str(s.toUtf8()).decode("utf-8")) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) 

私はUnicodeに関連する質問がたくさんあるけど、私はこの答えを見つけることができません。

どうすればよいですか?

編集:

私はハック方法を見つけた:

あなたはより良い方法を知っていますか?

答えて

3

これはあなたの後ですか?

In [23]: a 
Out[23]: u'\xc5\x9f' 

In [24]: a.encode('latin-1') 
Out[24]: '\xc5\x9f' 

In [25]: type(a.encode('latin-1')) 
Out[25]: <type 'str'> 
+0

まさにそれが:)です。ありがとうございました。 – utdemir

7

あなたはQStringのデータ型のユニコード文字列を持っている、とのpython文字列に変換する必要がある場合は、あなただけ:

unicode(YOUR_QSTRING_STRING) 
関連する問題