Spec-Zone.ru › Python 3.13

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

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 в зависимости от того, зарегистрирован ли кодек для указанной кодировки. Эта функция всегда завершается успешно.

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.

Игнорировать ошибку 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 escape-последовательностями с обратной косой чертой (\x, \u и \U).

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

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

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

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

Spec-Zone.ru

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