soup = content.decode('utf-8')
Пытаюсь декодировать приходящую HTML страницу из байт в строку. Вот ошибка UnicodeEncodeError: 'charmap' codec can't encode character '\xf8' in position 3901: character maps to undefined.
Могу ли я как-то научить UTF распознавать все символы, или может можно игнорировать неизвестные?
При неправильном раскодировании через decode() будет UnicodeDecodeError. Так что то, что тут написано про UnicodeEncodeError, - это левая туфта какая-то.
abcd0x00: sim3x: Питон 3.5, получают тело документа через urllib или requests, тело приходит в байтах, нужно распарсить, а сначала декодировать. И это вовсе не левая туфта как вы написали, а особенность. prntscr.com/bwwq8f
sim3x: тело приходящего документа приходит с пометкой b' и type() подтверждает что это байты. Не декодирует он. Показать код? Да это три строки prntscr.com/bx5xs4 .
Taylor_Superhero: chardet тебе не нужен, кодировка обычно передаётся вместе со страницей в http-заголовках. В питоне она вытаскивается из ответа urllib.request.urlopen(), который передаётся в виде email.message.Message(). python.org. get_content_charset()
Taylor_Superhero: кодировка может измениться на стороне сервера в любой момент, поэтому её надо определять автоматически каждый раз. Иначе ты будешь 1000 раз раскодировать правильно, а 1001 раз раскодировать неправильно.