Это работает для меня, используя toUtf8()
:
>>> s = u'éé'
>>> qs = QString(s)
>>> qs
PyQt4.QtCore.QString(u'\xe9\xe9')
>>> print qs
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)
>>> print qs.toUtf8()
éé
>>>
Ваши внутренние данные должны быть Unicode, поэтому вы должны использовать u'éé'
, а не просто 'éé'
, как вы указали в своем вопросе,Ваш комментарий даже говорит u'éé'
.
Обновление: Извините, но печать или str()
на Unicode не может гарантировать работу на объектах Unicode, если вы не используете специальную кодировку.Потоки печати принимают байтовые массивы / байтовые строки, а str () объекта Unicode эффективно пытается конвертировать Unicode в байтовый массив / байтовую строку.Вы не сможете избежать байтовых массивов!