# 코덱 등록소와 지원 함수

int `PyCodec_Register`(PyObject *search_function)

  새로운 코덱 검색 함수를 등록합니다.

  부작용으로, 아직 로드되지 않았다면, `encodings` 패키지를 로드하여 항상 검색 함수 목록의 첫 번째 항목이 되도록 합니다.

int `PyCodec_KnownEncoding`(const char *encoding)

  지정된 encoding에 대해 등록된 코덱이 있는지에 따라 `1` 이나 `0`을 반환합니다. 이 함수는 항상 성공합니다.

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

  일반 코덱 기반 인코딩 API.

  object is passed through the encoder function found for the given encoding using the error handling method defined by errors. errors may be `NULL` to use the default method defined for the codec. Raises a `LookupError` if no encoder can be found.

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

  일반 코덱 기반 디코딩 API.

  object is passed through the decoder function found for the given encoding using the error handling method defined by errors. errors may be `NULL` to use the default method defined for the codec. Raises a `LookupError` if no encoder can be found.

## 코덱 조회 API

In the following functions, the encoding string is looked up converted to all lower-case characters, which makes encodings looked up through this mechanism effectively case-insensitive. If no codec is found, a `KeyError` is set and `NULL` returned.

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

  주어진 encoding에 대한 인코더 함수를 가져옵니다.

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

  주어진 encoding에 대한 디코더 함수를 가져옵니다.

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

  지정된 encoding에 대한 `IncrementalEncoder` 객체를 가져옵니다.

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

  지정된 encoding에 대한 `IncrementalDecoder` 객체를 가져옵니다.

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

  지정된 encoding에 대한 `StreamReader` 팩토리 함수를 가져옵니다.

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

  지정된 encoding에 대한 `StreamWriter` 팩토리 함수를 가져옵니다.

## 유니코드 인코딩 에러 처리기용 등록소 API

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

  지정된 name 으로 에러 처리 콜백 함수 error를 등록합니다. 코덱이 인코딩할 수 없는 문자/디코딩할 수 없는 바이트열을 발견하고, 인코드/디코드 함수를 호출할 때 name이 error 매개 변수로 지정되었을 때 이 콜백 함수를 호출합니다.

  콜백은 하나의 인자로 `UnicodeEncodeError`, `UnicodeDecodeError` 또는 `UnicodeTranslateError`의 인스턴스를 받아들이는데, 문제가 되는 문자나 바이트의 시퀀스와 이들의 원본 문자열에서의 오프셋에 대한 정보를 담고 있습니다 (이 정보를 추출하는 함수는 Unicode Exception Objects를 참조하세요). 콜백은 주어진 예외를 발생시키거나, 문제가 있는 시퀀스의 대체와 원래 문자열에서 인코딩/디코딩을 다시 시작해야 하는 오프셋을 제공하는 정수를 포함하는 두 항목 튜플을 반환해야 합니다.

  성공하면 `0`을, 에러면 `-1`을 반환합니다.

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

  Lookup the error handling callback function registered under name. As a special case `NULL` can be passed, in which case the error handling callback for “strict” will be returned.

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.

  유니코드 인코딩 에러를 `?` 나 `U+FFFD`로 치환합니다.

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

  유니코드 인코딩 에러를 XML 문자 참조로 치환합니다.

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

  유니코드 인코딩 에러를 백 슬래시 이스케이프(`\x`, `\u` 및 `\U`)로 치환합니다.

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

  유니코드 인코딩 에러를 `\N{...}` 이스케이프로 치환합니다.

  버전 3.5에 추가.