# Registro de codec e funções de suporte

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

  Registra uma nova função de busca de codec.

  Como efeito colateral, tenta carregar o pacote `encodings`, se isso ainda não tiver sido feito, com o propósito de garantir que ele sempre seja o primeiro na lista de funções de busca.

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

  Cancela o registro de uma função de busca de codec e limpa o cache de registro. Se a função de busca não está registrada, não faz nada. Retorna 0 no sucesso. Levanta uma exceção e retorna -1 em caso de erro.

  Novo na versão 3.10.

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

  Retorna `1` ou `0` dependendo se há um codec registrado para a dada codificação encoding. Essa função sempre é bem-sucedida.

PyObject *`PyCodec_Encode`(PyObject *object, const char *encoding, const char *errors)
  Retorna valor: Nova referência. Part of the Stable ABI.

  API de codificação baseada em codec genérico.

  object é passado através da função de codificação encontrada para a codificação fornecida por meio de encoding, usando o método de tratamento de erros definido por errors. errors pode ser `NULL` para usar o método padrão definido para o codec. Levanta um `LookupError` se nenhum codificador puder ser encontrado.

PyObject *`PyCodec_Decode`(PyObject *object, const char *encoding, const char *errors)
  Retorna valor: Nova referência. Part of the Stable ABI.

  API de decodificação baseada em decodificador genérico.

  object é passado através da função de decodificação encontrada para a codificação fornecida por meio de encoding, usando o método de tratamento de erros definido por errors. errors pode ser `NULL` para usar o método padrão definido para o codec. Levanta um `LookupError` se nenhum codificador puder ser encontrado.

## API de pesquisa de codec

Nas funções a seguir, a string encoding é pesquisada com todos os caracteres sendo convertidos para minúsculo, o que faz com que as codificações pesquisadas por esse mecanismo não façam distinção entre maiúsculas e minúsculas. Se nenhum codec for encontrado, um `KeyError` é definido e `NULL` é retornado.

PyObject *`PyCodec_Encoder`(const char *encoding)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Obtém uma função de codificação para o encoding dado.

PyObject *`PyCodec_Decoder`(const char *encoding)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Obtém uma função de decodificação para o encoding dado.

PyObject *`PyCodec_IncrementalEncoder`(const char *encoding, const char *errors)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Obtém um objeto `IncrementalEncoder` para o encoding dado.

PyObject *`PyCodec_IncrementalDecoder`(const char *encoding, const char *errors)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Obtém um objeto `IncrementalDecoder` para o encoding dado.

PyObject *`PyCodec_StreamReader`(const char *encoding, PyObject *stream, const char *errors)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Obtém uma função de fábrica `StreamReader` para o encoding dado.

PyObject *`PyCodec_StreamWriter`(const char *encoding, PyObject *stream, const char *errors)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Obtém uma função de fábrica `StreamWriter` para o encoding dado.

## API de registro de tratamentos de erros de decodificação Unicode

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

  Registra a função de retorno de chamada de tratamento de erro para o nome fornecido. Esta chamada de função é invocada por um codificador quando encontra caracteres/bytes indecodificáveis e nome é especificado como o parâmetro de erro na chamada da função de codificação/decodificação.

  O retorno de chamada obtém um único argumento, uma instância de `UnicodeEncodeError`, `UnicodeDecodeError` ou `UnicodeTranslateError` que contém informações sobre a sequencia problemática de caracteres ou bytes e seu deslocamento na string original (consulte Objetos de exceção Unicode para funções que extraem essa informação). A função de retorno de chamada deve levantar a exceção dada, ou retornar uma tupla de dois itens contendo a substituição para a sequência problemática, e um inteiro fornecendo o deslocamento na string original na qual a codificação/decodificação deve ser retomada.

  Retorna `0` em caso de sucesso, `-1` em caso de erro.

PyObject *`PyCodec_LookupError`(const char *name)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Pesquisa a função de retorno de chamada de tratamento de erros registrada em name. Como um caso especial, `NULL` pode ser passado; nesse caso, o erro no tratamento de retorno de chamada para “strict” será retornado.

PyObject *`PyCodec_StrictErrors`(PyObject *exc)
  Retorna valor: Sempre NULL. Part of the Stable ABI.

  Levanta exc como uma exceção.

PyObject *`PyCodec_IgnoreErrors`(PyObject *exc)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Ignora o erro de unicode, ignorando a entrada que causou o erro.

PyObject *`PyCodec_ReplaceErrors`(PyObject *exc)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Substitui o erro de unicode por `?` ou `U+FFFD`.

PyObject *`PyCodec_XMLCharRefReplaceErrors`(PyObject *exc)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Substitui o erro de unicode por caracteres da referência XML.

PyObject *`PyCodec_BackslashReplaceErrors`(PyObject *exc)
  Retorna valor: Nova referência. Part of the Stable ABI.

  Substitui o erro de unicode com escapes de barra invertida (`\x`, `\u` e `\U`).

PyObject *`PyCodec_NameReplaceErrors`(PyObject *exc)
  Retorna valor: Nova referência. Part of the Stable ABI since version 3.7.

  Substitui os erros de codificação unicode com escapes `\N{...}`.

  Novo na versão 3.5.