Я предоставил некоторую соответствующую информацию о кодировании / декодировании текста в этом ответе: https://stackoverflow.com/a/34662963/2957811
Чтобы добавить к этому здесь, важно думать о тексте в одном из двух возможных состояний: «закодировано» и «декодированный '
' декодированный 'означает, что он находится во внутреннем представлении вашего интерпретатора / библиотеки, который может использоваться для манипулирования символами (например, поиска, преобразования регистра, среза подстроки, количества символов, ...) или отображения (поиск кодовой точки в шрифте и рисование глифа), но не может быть передан в или из запущенного процесса.
'кодированный' означает, что это поток байтов, который может передаваться как любой другойданные, но бесполезны для манипулирования или отображения.
Если вы раньше работали с сериализованными объектами, считайте «декодированный» полезным объектом в памяти, а «закодированный» - сериализованной версией.
'\xc1\xe5\xeb\xe0\xff \xff\xe1\xeb\xfb\xed\xff \xe3\xf0\xee\xec\xf3'
- это ваша закодированная (или сериализованная) версия, предположительно закодированная с помощью cp1251.Эта кодировка должна быть правильной, потому что это «язык», используемый для сериализации символов и необходимый для воссоздания символов в памяти.
Вам необходимо , чтобы декодировать это из текущей кодировки (cp1251) в символы юникода python, затем перекодируйте его как поток байтов utf8.Ответчик, предположивший d.decode('cp1251').encode('utf8')
, имел это право, я просто надеюсь помочь объяснить, почему это должно сработать.