Сообщить об ошибке.

Обработка ошибок кодирования/декодирования

Чтобы упростить и стандартизировать обработку ошибок, кодеки могут реализовывать различные схемы обработки ошибок, принимая строковый аргумент error.

Содержание:


Обработчики ошибок, которые применяются к текстовым и байтовым строкам:

  • 'strict' - Поднимает исключение UnicodeError или его подкласс. Значение 'strict' определено как значение по умолчанию. Реализовано в функции codecs.strict_errors() - рассмотрено ниже.
  • 'ignore' - Игнорирует искаженные данные (ошибки кодирования - декодирования) и продолжает без дальнейшего уведомления. Реализовано в функции codecs.ignore_errors() - рассмотрено ниже.

Обработчики ошибок, которые применяются только текстовым строкам:

  • 'replace' - Заменяет искаженные данные подходящим маркером замены. Python будет использовать официальный U+FFFD REPLACEMENT CHARACTER для встроенных кодеков при декодировании, и символ '?' при кодировании. Реализовано в функции codecs.replace_errors() - рассмотрено ниже.
  • 'xmlcharrefreplace' - Заменяет искаженные данные соответствующей ссылкой на XML символ. Обработчик используется только для кодирования. Реализовано в функции codecs.xmlcharrefreplace_errors() - рассмотрено ниже.
  • 'backslashreplace' - Заменяет искаженные данные escape-последовательностями с обратной косой чертой. Реализовано в функции codecs.backslashreplace_errors() - рассмотрено ниже.
  • 'namereplace' - Заменяет искаженные данные на \N{...} escape-последовательности. Обработчик используется только для кодирования.Реализовано в функции codecs.namereplace_errors() - рассмотрено ниже.
  • 'surrogateescape' - При декодировании заменяет байт отдельным суррогатным кодом в диапазоне от U+DC80 до U+DCFF. Этот код будет затем возвращен в тот же байт, когда обработчик ошибок 'surrogateescape' используется при кодировании данных.
  • 'surrogatepass' - Разрешает кодирование и декодирование суррогатных кодов. Данный обработчик используется только с кодировками utf-8, utf-16, utf-32-ut, utf-16-be, utf-16-le, utf-32-be, utf-32-le. Эти кодировки обычно рассматривают присутствие суррогатов как ошибку.

Функции-обработчики ошибок:

Стандартные обработчики ошибок также доступны как функции модуля.

codecs.strict_errors(exception):

Функция codecs.strict_errors() реализует обработку ошибок 'strict': каждая ошибка кодирования или декодирования вызывает исключение UnicodeError.

codecs.replace_errors(exception):

Функция codecs.replace_errors() реализует обработку ошибок 'replace' - только для текстовых кодировок: заменяет символом '?' ошибки кодирования (для кодирования кодеком) и символом Unicode '\ufffd' для ошибок декодирования.

codecs.ignore_errors(exception):

Функция codecs.ignore_errors() реализует обработку ошибок 'ignore': искаженные данные игнорируются, а кодирование или декодирование продолжается без дальнейшего уведомления.

codecs.xmlcharrefreplace_errors(exception):

Функция codecs.xmlcharrefreplace_errors() реализует обработку ошибок 'xmlcharrefreplace' - только для кодирования с текстовыми кодировками: ошибки кодирования заменяются соответствующей ссылкой на символ XML.

codecs.backslashreplace_errors(exception):

Функция codecs.backslashreplace_errors() реализует обработку ошибок 'backslashreplace' - только для текстовых кодировок: искаженные данные заменяются escape-последовательностью с обратной косой чертой.

codecs.namereplace_errors(exception):

Функция codecs.namereplace_errors() реализует обработку ошибок 'namereplace' - только для кодирования с текстовыми кодировками: ошибки кодирования заменяется \N{...} escape-последовательностью.