# Реєстр кодеків і функції підтримки

int PyCodec_Register(PyObject *search_function)
  Part of the Stable ABI.

  Зареєструйте нову функцію пошуку кодеків.

  Як побічний ефект, це намагається завантажити пакет `encodings`, якщо він ще не був завантажений, щоб переконатися, що він завжди перший у списку функцій пошуку.

int PyCodec_Unregister(PyObject *search_function)
  Part of the Stable ABI since version 3.10.

  Скасуйте реєстрацію функції пошуку кодеків і очистіть кеш реєстру. Якщо функція пошуку не зареєстрована, нічого не робіть. Повернути 0 у разі успіху. Викликати виняток і повертати -1 у разі помилки.

  Нове в версії 3.10.

int PyCodec_KnownEncoding(const char *encoding)
  Part of the Stable ABI.

  Повертає `1` або `0` залежно від того, чи існує зареєстрований кодек для даного кодування. Ця функція завжди успішна.

PyObject *PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)
  Return value: New reference. Part of the Stable ABI.

  API кодування на основі універсального кодека.

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

PyObject *PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)
  Return value: New reference. Part of the Stable ABI.

  Загальний API декодування на основі кодеків.

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

## API пошуку кодеків

У наведених нижче функціях рядок encoding перетворюється на всі символи нижнього регістру, що робить кодування, які шукаються за допомогою цього механізму, без урахування регістру. Якщо кодек не знайдено, встановлюється `KeyError` і повертається `NULL`.

PyObject *PyCodec_Encoder(const char *encoding)
  Return value: New reference. Part of the Stable ABI.

  Отримайте функцію кодувальника для заданого кодування.

PyObject *PyCodec_Decoder(const char *encoding)
  Return value: New reference. Part of the Stable ABI.

  Отримайте функцію декодера для заданого кодування.

PyObject *PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
  Return value: New reference. Part of the Stable ABI.

  Отримайте об’єкт `IncrementalEncoder` для вказаного кодування.

PyObject *PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
  Return value: New reference. Part of the Stable ABI.

  Отримайте об’єкт `IncrementalDecoder` для вказаного кодування.

PyObject *PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
  Return value: New reference. Part of the Stable ABI.

  Отримати фабричну функцію `StreamReader` для заданого кодування.

PyObject *PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
  Return value: New reference. Part of the Stable ABI.

  Отримати фабричну функцію `StreamWriter` для вказаного кодування.

## API реєстру для обробників помилок кодування Unicode

int PyCodec_RegisterError(const char *name, PyObject *error)
  Part of the Stable ABI.

  Зареєструйте функцію зворотного виклику обробки помилок error під вказаним ім’ям. Ця функція зворотного виклику буде викликана кодеком, коли він зустріне некодовані символи/некодовані байти, а name вказано як параметр помилки під час виклику функції кодування/декодування.

  Зворотний виклик отримує один аргумент, екземпляр `UnicodeEncodeError`, `UnicodeDecodeError` або `UnicodeTranslateError`, який містить інформацію про проблемну послідовність символів або байтів та їх зсув у вихідному рядку (див. Виняткові об’єкти Unicode для функцій для отримання цієї інформації). Зворотний виклик повинен або викликати заданий виняток, або повертати кортеж із двох елементів, що містить заміну для проблемної послідовності, і ціле число, що дає зсув у вихідному рядку, на якому кодування/декодування має бути відновлено.

  Повертає `0` в разі успіху, `-1` у разі помилки.

PyObject *PyCodec_LookupError(const char *name)
  Return value: New reference. Part of the Stable ABI.

  Пошук функції зворотного виклику обробки помилок, зареєстрованої під ім’ям. Як особливий випадок можна передати `NULL`, у цьому випадку буде повернено зворотний виклик обробки помилок для «strict».

PyObject *PyCodec_StrictErrors(PyObject *exc)
  Return value: Always NULL. Part of the Stable ABI.

  Підніміть exc як виняток.

PyObject *PyCodec_IgnoreErrors(PyObject *exc)
  Return value: New reference. Part of the Stable ABI.

  Ігноруйте помилку Юнікоду, пропускаючи неправильне введення.

PyObject *PyCodec_ReplaceErrors(PyObject *exc)
  Return value: New reference. Part of the Stable ABI.

  Замініть помилку кодування Unicode на `?` або `U+FFFD`.

PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
  Return value: New reference. Part of the Stable ABI.

  Замініть помилку кодування Unicode посиланнями на символи XML.

PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
  Return value: New reference. Part of the Stable ABI.

  Замініть помилку кодування Unicode на екранування зворотної похилої риски (`\x`, `\u` і `\U`).

PyObject *PyCodec_NameReplaceErrors(PyObject *exc)
  Return value: New reference. Part of the Stable ABI since version 3.7.

  Замініть помилку кодування Юнікод на символи `\N{...}`.

  Нове в версії 3.5.