Я некоторое время экспериментировал с Python 2.Xи юникодом. Но я достиг точки, когда это не имеет смысла.
Первая проблема:
Некоторый код ясно объяснит, что я имею в виду.Переменная txt предназначена для имитации функции перевода pyqt4. Который возвращает QString.
# -*- coding: utf-8 -*-
from PyQt4 import QtCore
txt = QtCore.QString(u'può essere / sarà / 日本語')
txtUnicode1 = unicode(txt, errors='replace')
txtUnicode2 = unicode(txt)
Когда print() выполняет две строки Юникода, я получаю:
pu� essere / sar� / ???
può essere / sarà / 日本語
Конечно, я мог бы получить то же самое, используя QString.__str__(), но я хочу понять, поэтому ради аргумента я хотел бы знать:
Вторая проблема:
Я пытаюсь понять кодирование/декодирование.
>>> a = u'può essere / sarà / 日本'
>>> b = a.encode('utf-8')
>>> a
u'pu\xf2 essere / sar\xe0 / \u65e5\u672c'
>>> b
'pu\xc3\xb2 essere / sar\xc3\xa0 / \xe6\x97\xa5\xe6\x9c\xac'
>>> print a
può essere / sarà / 日本
>>> print b
può essere / sarà / 日本