Реестр кодеков и функции поддержки¶
-
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.