Я пытаюсь сделать простое преобразование в Unicode строка в стандартную строку, но безуспешно.
У меня есть: PyQt4.QtCore.QString (u '\ xc5 \ x9f')
Я хочу: '\ xc5 \ x9f'
обратите внимание: тип str не unicode, потому что библиотека, которую я использую, не принимает 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 , но я не могу найти этот ответ.
Что мне делать?
Изменить:
Я нашел хакерский способ:
>>> unicoded = str(s.toUtf8()).decode("utf-8")
>>> unicoded
u'\xc5\x9f'
>>> eval(repr(unicoded)[1:])
'\xc5\x9f'
Вы знаете способ получше?