Python unicode представляет в виде строки с UTF-8?

Я возвращаю из библиотеки, что надеется быть неправильной строкой unicode:

>>> title
u'Sopet\xc3\xb3n'

Теперь, те два шестнадцатеричных Escape там являются кодировкой UTF-8 для ЛАТИНСКОЙ СТРОЧНОЙ БУКВЫ U+00F3 O С ОСТРЫМ. Насколько я понимаю, строка unicode в Python должна иметь фактический символ, не кодировка UTF-8 для символа, таким образом, я думаю, что это неправильно и по-видимому ошибка или в библиотеке или в моем входе, правильно?

Вопрос, как делают я (a) распознаю, что у меня есть закодированный текст UTF-8 в моей строке unicode и (b) преобразовываю это в надлежащую строку unicode?

Я озадачен на (a), поскольку нет ничего неправильно, мудро кодированием, о той исходной строке (т.е., оба - допустимые символы самостоятельно, u'\xc3\xb3' == Ã ³, но они не то, что, как предполагается, там),

Похоже, что я могу достигнуть (b) оценкой () луга, который repr () производил минус "u" впереди для получения ул. и затем декодирования ул. с UTF-8:

>>> eval(repr(title)[1:]).decode("utf-8")
u'Sopet\xf3n'
>>> print eval(repr(title)[1:]).decode("utf-8")
Sopetón

Но это кажется немного топорным. Существует ли официально санкционированный способ вытащить необработанные данные из строки unicode и обработки что как обычная строка?

7
задан Watts 5 July 2010 в 23:38
поделиться

1 ответ

а) Попробуйте поставить описанным ниже способом.

b)

>>> u'Sopet\xc3\xb3n'.encode('latin-1').decode('utf-8')
u'Sopet\xf3n'
11
ответ дан 6 December 2019 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: