Проблема с кодировкой при парсинге сообщения твич

Есть переменная message в нее парсится сообщение и получается, что то по типу \xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82 И как это можно перевести в нормальную строку? ps: нужно чтобы именно переменная message потом станвоилась нормальной строкой с правильной кодировкой (сообщение берется с чата твича, если это как то делу поможет)


Ответы (1 шт):

Автор решения: Gleb

Если это имеет тип bites то можно просто применить метод decode

b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'.decode('utf-8')

эта строка даст "привет".

Если у вас строка с escape-последовательностью, т.е.:

 b = '\\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb2\\xd0\\xb5\\xd1\\x82'

то можно такой способ применить:

b.encode('latin1').decode('unicode-escape').encode('latin1').decode('utf-8') 

вызовы encode нужны потому что они возвращают байты, у которых есть методы decode

Ну и последний случай, если у вас вдруг так задана переменная:

a = '\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'

То декодировать её можно так:

a.encode('latin1').decode('utf-8')
→ Ссылка