Содержание страницы
Реестр кодеков и вспомогательные функции¶Codec registry and support functions
- int PyCodec_Register(PyObject *search_function)¶
Регистрирует новую функцию поиска кодека.
В качестве побочного эффекта эта функция пытается загрузить пакет encodings, если он ещё не загружен, чтобы гарантировать, что он всегда будет первым в списке функций поиска.
- int PyCodec_KnownEncoding(const char *encoding)¶
Возвращает 1 или 0 в зависимости от того, зарегистрирован ли кодек для заданной кодировки.
- PyObject* PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)¶
Универсальный API кодирования на основе кодеков.
object передаётся через функцию кодировщика, найденную для заданной encoding, с использованием метода обработки ошибок, заданного errors. errors может быть NULL, чтобы использовать метод по умолчанию, определённый для кодека. Возбуждает LookupError, если кодировщик не найден.
- PyObject* PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)¶
Универсальный API декодирования на основе кодеков.
object передаётся через функцию декодировщика, найденную для заданной encoding, с использованием метода обработки ошибок, заданного errors. errors может быть NULL, чтобы использовать метод по умолчанию, определённый для кодека. Возбуждает LookupError, если кодировщик не найден.
API для поиска кодеков¶Codec lookup API
В следующих функциях строка encoding приводится к нижнему регистру перед поиском, что делает поиск кодеков через этот механизм регистронезависимым. Если кодек не найден, устанавливается KeyError и возвращается NULL.
- PyObject* PyCodec_Encoder(const char *encoding)¶
Возвращает функцию кодировщика для заданной encoding.
- PyObject* PyCodec_IncrementalEncoder(const char *encoding, const char *errors)¶
Получить объект IncrementalEncoder для заданного encoding.
- PyObject* PyCodec_IncrementalDecoder(const char *encoding, const char *errors)¶
Получить объект IncrementalDecoder для заданного encoding.
- PyObject* PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)¶
Получить фабричную функцию StreamReader для заданного encoding.
- PyObject* PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)¶
Получить фабричную функцию StreamWriter для заданного encoding.
API реестра обработчиков ошибок кодирования Unicode¶Registry API for Unicode encoding error handlers
- int PyCodec_RegisterError(const char *name, PyObject *error)¶
Зарегистрировать колбэк-функцию обработки ошибок error под указанным именем name. Эта колбэк-функция будет вызвана кодеком, когда он встретит некодируемые символы/недекодируемые байты, и name указан в качестве параметра error в вызове функции encode/decode.
Колбэк получает один аргумент – экземпляр UnicodeEncodeError, UnicodeDecodeError или UnicodeTranslateError, который содержит информацию о проблемной последовательности символов или байтов и их смещении в исходной строке (см. Unicode Exception Objects для функций извлечения этой информации). Колбэк должен либо возбудить переданное исключение, либо вернуть кортеж из двух элементов: замену для проблемной последовательности и целое число, задающее смещение в исходной строке, начиная с которого следует возобновить кодирование/декодирование.
Возвращает 0 в случае успеха, -1 при ошибке.
- PyObject* PyCodec_LookupError(const char *name)¶
Ищет зарегистрированную функцию обратного вызова для обработки ошибок под именем name. В качестве особого случая можно передать NULL, и тогда будет возвращена функция обратного вызова для обработки ошибок со стратегией «strict».
- PyObject* PyCodec_IgnoreErrors(PyObject *exc)¶
Игнорировать ошибку Unicode, пропуская некорректный ввод.
- PyObject* PyCodec_ReplaceErrors(PyObject *exc)¶
Заменяет ошибку кодирования Unicode на ? или U+FFFD.