Документация Python неофициальный перевод
Содержание страницы

Реестр кодеков и вспомогательные функцииCodec registry and support functions

int PyCodec_Register(PyObject *search_function)

Регистрирует новую функцию поиска кодека.

В качестве побочного эффекта эта функция пытается загрузить пакет encodings, если он ещё не загружен, чтобы гарантировать, что он всегда будет первым в списке функций поиска.

int PyCodec_KnownEncoding(const char *encoding)

Возвращает 1 или 0 в зависимости от того, зарегистрирован ли кодек для заданной кодировки.

PyObject* PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)

Универсальный API кодирования на основе кодеков.

object передаётся через функцию кодировщика, найденную для заданной encoding, с использованием метода обработки ошибок, заданного errors. errors может быть NULL, чтобы использовать метод по умолчанию, определённый для кодека. Возбуждает LookupError, если кодировщик не найден.

PyObject* PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)

Универсальный API декодирования на основе кодеков.

object передаётся через функцию декодировщика, найденную для заданной encoding, с использованием метода обработки ошибок, заданного errors. errors может быть NULL, чтобы использовать метод по умолчанию, определённый для кодека. Возбуждает LookupError, если кодировщик не найден.

API для поиска кодековCodec lookup API

В следующих функциях строка encoding приводится к нижнему регистру перед поиском, что делает поиск кодеков через этот механизм регистронезависимым. Если кодек не найден, устанавливается KeyError и возвращается NULL.

PyObject* PyCodec_Encoder(const char *encoding)

Возвращает функцию кодировщика для заданной encoding.

PyObject* PyCodec_Decoder(const char *encoding)

Возвращает функцию декодера для заданной encoding.

PyObject* PyCodec_IncrementalEncoder(const char *encoding, const char *errors)

Получить объект IncrementalEncoder для заданного encoding.

PyObject* PyCodec_IncrementalDecoder(const char *encoding, const char *errors)

Получить объект IncrementalDecoder для заданного encoding.

PyObject* PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)

Получить фабричную функцию StreamReader для заданного encoding.

PyObject* PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)

Получить фабричную функцию StreamWriter для заданного encoding.

API реестра обработчиков ошибок кодирования UnicodeRegistry API for Unicode encoding error handlers

int PyCodec_RegisterError(const char *name, PyObject *error)

Зарегистрировать колбэк-функцию обработки ошибок error под указанным именем name. Эта колбэк-функция будет вызвана кодеком, когда он встретит некодируемые символы/недекодируемые байты, и name указан в качестве параметра error в вызове функции encode/decode.

Колбэк получает один аргумент – экземпляр UnicodeEncodeError, UnicodeDecodeError или UnicodeTranslateError, который содержит информацию о проблемной последовательности символов или байтов и их смещении в исходной строке (см. Unicode Exception Objects для функций извлечения этой информации). Колбэк должен либо возбудить переданное исключение, либо вернуть кортеж из двух элементов: замену для проблемной последовательности и целое число, задающее смещение в исходной строке, начиная с которого следует возобновить кодирование/декодирование.

Возвращает 0 в случае успеха, -1 при ошибке.

PyObject* PyCodec_LookupError(const char *name)

Ищет зарегистрированную функцию обратного вызова для обработки ошибок под именем name. В качестве особого случая можно передать NULL, и тогда будет возвращена функция обратного вызова для обработки ошибок со стратегией «strict».

PyObject* PyCodec_StrictErrors(PyObject *exc)

Возбудить exc как исключение.

PyObject* PyCodec_IgnoreErrors(PyObject *exc)

Игнорировать ошибку Unicode, пропуская некорректный ввод.

PyObject* PyCodec_ReplaceErrors(PyObject *exc)

Заменяет ошибку кодирования Unicode на ? или U+FFFD.

PyObject* PyCodec_XMLCharRefReplaceErrors(PyObject *exc)

Заменить ошибку кодирования Unicode на символьные ссылки XML.

PyObject* PyCodec_BackslashReplaceErrors(PyObject *exc)

Заменяет ошибку кодирования Unicode на управляющие последовательности с обратной косой чертой (\x, \u и \U).