Codec Objects
.............
The `Codec' class defines these methods which also define the function
interfaces of the stateless encoder and decoder:
`encode(input[, errors])'
Encodes the object INPUT and returns a tuple (output object,
length consumed).
ERRORS defines the error handling to apply. It defaults to
`'strict'' handling.
The method may not store state in the `Codec' instance. Use
`StreamCodec' for codecs which have to keep state in order to make
encoding/decoding efficient.
The encoder must be able to handle zero length input and return an
empty object of the output object type in this situation.
`decode(input[, errors])'
Decodes the object INPUT and returns a tuple (output object,
length consumed).
INPUT must be an object which provides the `bf_getreadbuf' buffer
slot. Python strings, buffer objects and memory mapped files are
examples of objects providing this slot.
ERRORS defines the error handling to apply. It defaults to
`'strict'' handling.
The method may not store state in the `Codec' instance. Use
`StreamCodec' for codecs which have to keep state in order to make
encoding/decoding efficient.
The decoder must be able to handle zero length input and return an
empty object of the output object type in this situation.
The `StreamWriter' and `StreamReader' classes provide generic working
interfaces which can be used to implement new encodings submodules very
easily. See `encodings.utf_8' for an example on how this is done.