Как работать с суррогатными парами в Python?

Это продолжение кПреобразование в эмодзи, В этом вопросе у ОП былаjson.dumps()файл с эмодзи в виде суррогатной пары -\ud83d\ude4f, У него были проблемы с чтением файла и правильным переводом смайликовответ былоjson.loads() каждая строка из файла, иjson модуль будет обрабатывать преобразование суррогатной пары обратно (я предполагаю, в кодировке UTF8) эмодзи.

Итак, вот моя ситуация: скажем, у меня есть обычная строка Unicode Python 3 с суррогатной парой в ней:

emoji = "This is \ud83d\ude4f, an emoji."

Как мне обработать эту строку, чтобы получить представление осмайликов из этого? Я ищу что-то вроде этого:

"This is , an emoji."
# or
"This is \U0001f64f, an emoji."

Я пробовал:

print(emoji)
print(emoji.encode("utf-8")) # also tried "ascii", "utf-16", and "utf-16-le"
json.loads(emoji) # and `.encode()` with various codecs

Вообще я получаю ошибку, похожую наUnicodeEncodeError: XXX codec can't encode character '\ud83d' in position 8: surrogates no allowed.

Я использую Python 3.5.1 в Linux с$LANG установлен вen_US.UTF-8, Я запустил эти образцы как в интерпретаторе Python из командной строки, так и в IPython, работающем в Sublime Text - никаких различий, похоже, нет.

Ответы на вопрос(2)

Ваш ответ на вопрос