Python Glossary English

все Python 3codecsфункция

codecs.getdecoder()

реестр кодеков

Возвращает функцию-декодировщик кодека без состояния: она принимает байты и отдаёт пару (строка, сколько байтов обработано). То же, что lookup(name).decode.

Синтаксис

decode = codecs.getdecoder(encoding)

Результат — кортеж, а не str, и это частая ошибка при замене bytes.decode. Декодировщик без состояния не умеет ждать продолжения: многобайтовый символ, разрезанный границей куска из сети или файла, даёт UnicodeDecodeError. Для данных по кускам берут getincrementaldecoder или iterdecode, для целых байтов хватает bytes.decode.

Примеры

import codecs
dec = codecs.getdecoder('utf-8')
print(dec(b'abc'))  # → ('abc', 3)
chunk = 'я'.encode('utf-8')[:1]
try:
    dec(chunk)
except UnicodeDecodeError as e:
    print(e.reason)  # → unexpected end of data

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности