Реестр кодеков и функции поддержки¶
-
int PyCodec_Register(PyObject *search_function)¶
- Часть Стабильный ABI.
Зарегистрируйте новую функцию поиска кодеков.
В качестве побочного эффекта он пытается загрузить пакет
encodings
, если это еще не сделано, чтобы убедиться, что он всегда первый в списке функций поиска.
-
int PyCodec_Unregister(PyObject *search_function)¶
- Часть Стабильный ABI с версии 3.10.
Снимите с регистрации функцию поиска кодеков и очистите кэш реестра. Если функция поиска не зарегистрирована, ничего не делать. Верните 0 при успехе. Вызовите исключение и верните -1 при ошибке.
Added in version 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.
Игнорируйте ошибку юникода, пропуская ошибочный ввод.
-
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{...}
.Added in version 3.5.