У вас есть правильная идея с decode
.
Оборачивая вывод в str(...)
в эту строку:
content = str(urllib.request.urlopen(site, timeout=10).read())
Вы либо преобразуете байтовый объект встрока (это будет видно по ведущему b'
и завершающему '
в content
), или, если он уже был декодирован как ISO-8859-1, ничего не делая.
В любом случае, не делайте этого - удалите вызов str
.
Теперь содержимое будет либо bytes
объектом, либо str
объектом.
Так что если этострока, она будет уже декодирована (неправильно) как ISO-8859-1.Вы захотите закодировать его обратно в байтовый объект, а затем правильно его декодировать:
content = urllib.request.urlopen(site, timeout=10).read()
if isinstance(content, str):
content = content.encode('iso-8859-1')
content = content.decode('utf8')
Теперь ваши \xe2\x80\x93
байты должны правильно отображаться как: -
Обновление :
Из вашего комментария все, что вам нужно сделать, это:
content = urllib.request.urlopen(site, timeout=10).read().decode('utf8')