все Python 3Исключенияисключение
UnicodeDecodeError
встроенные исключения
Не удалось декодировать байты в строку: b'\xff'.decode('utf-8').
Синтаксис
raise UnicodeDecodeError
Почти всегда виноваты не данные, а неверно угаданная кодировка: open() без encoding= до Python 3.15 берёт кодировку системы, поэтому файл в UTF-8 спокойно читается на Linux и падает на Windows с cp1251. Ловить это исключение обычно бессмысленно — правильнее явно передать encoding='utf-8', а если битые байты действительно ожидаемы, добавить errors='replace' или 'ignore'. У объекта есть поля encoding, object, start, end и reason: они показывают точную позицию байта, на котором декодер сдался.
Примеры
try:
b'\xff'.decode('utf-8')
except UnicodeDecodeError as e:
print(type(e).__name__) # → UnicodeDecodeError
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности