This document is for an old version of Python that is no longer supported. You should upgrade, and read the Python documentation for the current stable release.

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

int `PyCodec_Register`(PyObject *search_function)

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

  As side effect, this tries to load the `encodings` package, if not yet done, to make sure that it is always first in the list of search functions.

int `PyCodec_KnownEncoding`(const char *encoding)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  Пошук функції зворотного виклику обробки помилок, зареєстрованої під ім’ям. Як особливий випадок можна передати `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.

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

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

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

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

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

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

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

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