>Last i looked they use a gigantic chunk of memory in mbstate_t or >so (128 byte?).
128 bytes is considered 'gigantic'? :-) While I am not a huge fan of the POSIX locale functions, thankfully we can mostly get by without them. Basically we use iconv() to convert from the source character set to the native character set, and we have a small amount of mbtowc() and wcwidth() to handle multibyte character sets and figure out column width (and really, we only do UTF-8 well). --Ken