/ / Перетворення ASCII в кодування Unicode питання [дублікат] - Python, Python-2.x

Перетворення ASCII в кодування Unicode issue [дублікат] - python, python-2.x

У мене є питання про кодування Python 2. Я намагаюся декодувати рядок ASCII, який містить код Unicode листа до Unicode, а потім кодувати його назад до Latin-1, але без успіху. Ось ілюстрація:

In[27]: d = u"u010d"

In[28]: print d.encode("utf-8")

č

In[29]: d1 = "u010d"

In[30]: d1.decode("ascii").encode("utf-8")

Out[30]: "\u010d"

Я хотів би перетворити "u010d" до "č". Чи є вбудовані рішення для уникнення заміни користувацьких рядків?

Відповіді:

1 для відповіді № 1

Коли ти робиш

d1 = "u010d"

ви насправді отримуєте цей рядок:

In [3]: d1
Out[3]: "\u010d"

Це тому, що "звичайні" (не-Unicode) рядки не розпізнають unnnn escape-послідовність і, отже, перетворити її в літеральний зворотний слеш, за яким слід unnnn.

Для того, щоб розшифрувати це, потрібно використовувати unicode_escape кодек:

In [4]: print d1.decode("unicode_escape").encode("utf-8")
č

Але, звичайно, ви не повинні використовувати вихідні послідовності Unicode в рядках, які не є Unicode, в першу чергу.