Анализ вашей крошечной выборки данных:
>>> s = "\x98cW\x01\xa2\xbb\xba\xcc\xec\x90\xfc\xffP\xcb%\x01\x08"
>>> u = s.decode('utf8', 'replace')
>>> u
u'\ufffdcW\x01\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffdP\ufffd%\x01\x08'
>>> u.count(u'\ufffd')
9
>>> len(u)
16
(1) Это определенно не UTF-8 со случайной неверной последовательностью;более 50% символов Unicode недопустимы.Другими словами, нажатие вперед и использование data.decode('utf8', 'replace')
НЕ является хорошей идеей (на основе этого примера TINY).
(2) Символы \x01
(дважды) и \x08
заставляют меня подозревать, что выкаким-то образом получили двоичные данные.
(3) Сообщение об ошибке (усеченное), которое вы цитировали в комментарии, упомянуло 0x88
, но в примерах данных нет 0x88
.
(4) Отредактируйте ваш вопрос, чтобы показать, что вы должны были сделать в начале: (а) минимальный код, необходимый для воспроизведения проблемы, включая URL-адрес, к которому вы обращаетесь (б) полное сообщение об ошибке и трассировку (в) заверениечто вы скопировали / вставили (a) и (b) вместо того, чтобы печатать из памяти