Реестр кодеков и вспомогательные функции
-
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