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