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

int PyCodec_Register(PyObject *search_function)
Part of the Стабильный ABI.

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

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

int PyCodec_Unregister(PyObject *search_function)
Part of the Стабильный ABI since version 3.10.

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

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

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

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

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

Универсальный API кодирования на основе кодеков.

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

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

Универсальный API декодирования на основе кодеков.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вернуться на верх