Ошибка в преобразовании ISO-8859-1 в UTF8

html, который возвращает POST имеет кодировку ISO-8859-1, при попытке преобразования в UTF-8 выпадает в ошибку.

import requests

url = "http://___"
payload='some text'
headers = {some headers}
r=requests.request("POST", url, headers=headers, data=payload)
r.encoding

ISO-8859-1

html=r.text.encode('ISO-8859-1').decode('UTF-8')

'utf-8' codec can't decode byte 0xcf in position 226: invalid continuation byte

Если поискать пример конкретного текста, то можно увидеть такое:

from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, 'html.parser')
div=soup.find('div', {'class': 'thumbnail_3'})
mystr=div.find_all('td')[0].get_text()
print(mystr)

Âàðèàíòû íàèìåíîâàíèÿ ïðîäóêöèè


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

Автор решения: Andy Pavlov

У меня перекодировалось при таком составе кодировок:

text = 'Âàðèàíòû íàèìåíîâàíèÿ ïðîäóêöèè'
print(text.encode('CP1252').decode('CP1251', errors='ignore'))
# Варианты наименования продукции

Могу посоветовать в спорных случаях в список свести себе все варианты поддерживаемых кодировок с https://docs.python.org/3/library/codecs.html#standard-encodings. И в цикле их все попробовать с распечаткой применить. Так найдете нужную комбинацию кодировок.

→ Ссылка