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

int PyCodec_Register(PyObject *search_function)
Часть Стабильный ABI.

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

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

int PyCodec_Unregister(PyObject *search_function)
Часть Стабильный ABI с версии 3.10.

Снимите с регистрации функцию поиска кодеков и очистите кэш реестра. Если функция поиска не зарегистрирована, ничего не делать. Верните 0 при успехе. Вызовите исключение и верните -1 при ошибке.

Added in version 3.10.

int PyCodec_KnownEncoding(const char *encoding)
Часть Стабильный ABI.

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

PyObject *PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

Общий API кодирования на основе кодеков.

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

PyObject *PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

Общий API декодирования на основе кодеков.

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

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

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

PyObject *PyCodec_Encoder(const char *encoding)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

Получение функции кодирования для заданного кодирования.

PyObject *PyCodec_Decoder(const char *encoding)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

Получение функции декодера для заданного кодирования.

PyObject *PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

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

PyObject *PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

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

PyObject *PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

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

PyObject *PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

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

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

int PyCodec_RegisterError(const char *name, PyObject *error)
Часть Стабильный ABI.

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

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

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

PyObject *PyCodec_LookupError(const char *name)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

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

PyObject *PyCodec_StrictErrors(PyObject *exc)
Возвращаемое значение: Всегда NULL. Часть Стабильный ABI.

Поднимите exc как исключение.

PyObject *PyCodec_IgnoreErrors(PyObject *exc)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

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

PyObject *PyCodec_ReplaceErrors(PyObject *exc)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

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

PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

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

PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

Замените ошибку кодировки юникода эскападами обратного слеша (\x, \u и \U).

PyObject *PyCodec_NameReplaceErrors(PyObject *exc)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI с версии 3.7.

Замените ошибку кодировки юникода на эскейпы \N{...}.

Added in version 3.5.