The charset field is an opaque numerical charset identifier, which has no
meaning outside Enca library.
You will probably want to use it only as enca_charset_name() argument.
It is only guaranteed not to change meaning
during program execution time; change of its interpretation (e.g. due to
addition of new charsets) is not considered API change.
The surface field is a combination of EncaSurface flags. You may want
to ignore it completely; you should use enca_set_interpreted_surfaces()
to disable weird surfaces then.
Flags ENCA_CHARSET_7BIT, ENCA_CHARSET_8BIT, ENCA_CHARSET_16BIT,
ENCA_CHARSET_32BIT tell how many bits a `fundamental piece' consists of.
This is different from bits per character; r.g. UTF-8 consists of 8bit
pieces (bytes), but character can be composed from 1 to 6 of them.
ENCA_CHARSET_7BIT
Characters are represented with 7bit characters.
ENCA_CHARSET_8BIT
Characters are represented with bytes.
ENCA_CHARSET_16BIT
Characters are represented with 2byte words.
ENCA_CHARSET_32BIT
Characters are represented with 4byte words.
ENCA_CHARSET_FIXED
One characters consists of one fundamental piece.
ENCA_CHARSET_VARIABLE
One character consists of variable number of
fundamental pieces.