Spec-Zone.ru › Python 3.12

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

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 кодирования, основанный на кодеках.

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

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

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

object передается через функцию декодирования, найденную для данного кодирования, используя метод обработки ошибок, определённый параметром 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 регистра для обработчиков ошибок кодирования Юникода

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

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

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

Возвращает 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{...} эскейпы.

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

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

Spec-Zone.ru

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