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

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

int PyCodec_Register(PyObject *search_function)

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

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

int PyCodec_KnownEncoding(const char *encoding)

Возвращает 1 или 0 в зависимости от того, зарегистрирован ли кодек для заданной encoding. Эта функция всегда завершается успешно.

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 для указанной кодировки.

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

Получить объект IncrementalDecoder для указанной кодировки.

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

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

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

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

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 для функций извлечения этой информации). Колбэк должен либо вызвать полученное исключение, либо вернуть кортеж из двух элементов, содержащий замену для проблемной последовательности и целое число, указывающее смещение в исходной строке, с которого следует продолжить кодирование/декодирование.

Возвращает 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)

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

PyObject* PyCodec_NameReplaceErrors(PyObject *exc)

Заменить ошибку кодирования Юникод на escape-последовательности \N{...}.

Новое в версии 3.5.