Python Glossary English

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

codecs.register_error()

обработчики ошибок

Регистрирует свой обработчик ошибок кодирования под именем, которое затем передают в errors=... у encode, decode и open.

Синтаксис

codecs.register_error(name, error_handler)

Обработчик получает исключение (UnicodeEncodeError или UnicodeDecodeError) и обязан вернуть пару (замена, позиция продолжения) — обычно err.end — или бросить исключение. Вернуть просто строку — ошибка: получите TypeError. Один обработчик обслуживает и кодирование, и декодирование, различают их по isinstance. Регистрация глобальна для процесса, имя не должно совпасть со встроенным вроде 'replace'.

Примеры

import codecs
def mark(err):
    return ('<?>', err.end)
codecs.register_error('mark', mark)
print('aéb'.encode('ascii', 'mark'))  # → b'a<?>b'
print(b'a\xffb'.decode('utf-8', 'mark'))  # → a<?>b

См. также

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

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