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

int PyCodec_Register(PyObject *search_function)

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

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

int PyCodec_KnownEncoding(const char *encoding)

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

PyObject* PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)
Return value: New reference.

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

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

PyObject* PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)
Return value: New reference.

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

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

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

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

PyObject* PyCodec_Encoder(const char *encoding)
Return value: New reference.

Получить функцию кодера для данного encoding.

PyObject* PyCodec_Decoder(const char *encoding)
Return value: New reference.

Получить функцию декодера для данного encoding.

PyObject* PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
Return value: New reference.

Получить объект IncrementalEncoder для данного encoding.

PyObject* PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
Return value: New reference.

Получить объект IncrementalDecoder для данного encoding.

PyObject* PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
Return value: New reference.

Получить StreamReader заводскую функцию для данного encoding.

PyObject* PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
Return value: New reference.

Получить StreamWriter фабричную функцию для данного encoding.

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

int PyCodec_RegisterError(const char *name, PyObject *error)

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

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

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

PyObject* PyCodec_LookupError(const char *name)
Return value: New reference.

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

PyObject* PyCodec_StrictErrors(PyObject *exc)
Return value: Always NULL.

Создать exc как исключение.

PyObject* PyCodec_IgnoreErrors(PyObject *exc)
Return value: New reference.

Проигнорировать ошибку Юникода, пропустив неверный вход.

PyObject* PyCodec_ReplaceErrors(PyObject *exc)
Return value: New reference.

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

PyObject* PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
Return value: New reference.

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

PyObject* PyCodec_BackslashReplaceErrors(PyObject *exc)
Return value: New reference.

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

PyObject* PyCodec_NameReplaceErrors(PyObject *exc)
Return value: New reference.

Заменить ошибку кодирования Юникода на \N{...} переходы.

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