0

У меня есть код, который должен получать HTML со страницы. Проблема в том, что когда я делаю decode('utf-8'), он выдаёт ошибку UnicodeEncodeError. Вот кусок кода, который это делает:

test = urllib.request.urlopen(('https://vk.com/id375629436')).read()   
print(test.decode('utf-8', 'replace'))

Ошибка дословно:

'charmap' codec can't encode character '\xbb' in position 5681: character maps to <undefined>.
αλεχολυτ
  • 28,987
  • 13
  • 60
  • 119
  • похоже, Вы пытатесь раскодировать текст в cp1251 с помощью utf8. А это сложно сделать без ошибок. – KoVadim Dec 09 '16 at 11:56
  • 4
    Если print() убрать, то ошибка пропадёт. Чтобы воспроизвести ошибку: print('\xbb') (ни utf-8, ни html тут ни при чём). Чтобы печатать Unicode на Windows: Как из Python вывести на Windows-консоль строку в Юникоде? – jfs Dec 09 '16 at 12:17
  • @KoVadim encode значит закодировать (Unicode -> bytes). print() пытается здесь кавычку (») закодировать, но в консоли cp866 (oem code page) не имеет этого символа, что к ошибке ведёт. Можно поставить win-unicode-console, чтобы Unicode API использовать для вывода в консоль. См. ссылку выше. – jfs Dec 09 '16 at 12:26
  • Без вывода в консоль ошибка есть? Если нет самый быстрый способ отказаться от вывода и использовать или логирование или вывод текстовый файл. – Igor Dec 12 '16 at 10:44

0 Answers0