Реестр кодеков и функции поддержки

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)
Return value: New reference.

API кодирования на основе универсального кодека.

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

PyObject* PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)
Return value: New reference.

API декодирования на основе универсального кодека.

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

API поиска кодеков

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

PyObject* PyCodec_Encoder(const char *encoding)
Return value: New reference.

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

PyObject* PyCodec_Decoder(const char *encoding)
Return value: New reference.

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

PyObject* PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
Return value: New reference.

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

PyObject* PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
Return value: New reference.

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

PyObject* PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
Return value: New reference.

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

PyObject* PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
Return value: New reference.

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

API реестра для обработчиков ошибок кодировки Юникод

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

Регистрирует функцию обратного вызова обработки ошибок error под заданным name. Функция обратного вызова будет вызываться кодеком, когда он встречает некодируемые символы/некодируемые байты, а name указывается в качестве параметра ошибки при вызове функции Кодирования/декодирования.

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

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

PyObject* PyCodec_LookupError(const char *name)
Return value: New reference.

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

PyObject* PyCodec_StrictErrors(PyObject *exc)
Return value: Always NULL.

Вызывает exc как исключение.

PyObject* PyCodec_IgnoreErrors(PyObject *exc)
Return value: New reference.

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

PyObject* PyCodec_ReplaceErrors(PyObject *exc)
Return value: New reference.

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

PyObject* PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
Return value: New reference.

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

PyObject* PyCodec_BackslashReplaceErrors(PyObject *exc)
Return value: New reference.

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

PyObject* PyCodec_NameReplaceErrors(PyObject *exc)
Return value: New reference.

Заменить ошибку кодирования Юникод экранированием \N{...}.

Добавлено в версии 3.5.