Python Glossary English

все 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Сообщить о неточности