Spec-Zone.ru › Python 3.11

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

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

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

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

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

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

Введено в версии 3.10.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция обратного вызова получает один аргумент, экземпляр 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.

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

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

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

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

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

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

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

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

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

Введено в версии 3.5.

© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/c-api/codec.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API