libcharset - portable character set determination library

This library provides a function which determines the character set / encoding of text in the currently selected locale (the LC_CTYPE locale facet).

It is useful for portable programs which need to process text in other encodings and locales than the currently selected one. Possible uses:

In theory, this would be very simple: POSIX provides the nl_langinfo function, in such a way that

                  nl_langinfo (CODESET)
returns the encoding name. But the nl_langinfo function still does not exist on some systems, and on those where it exists it returns unstandardized variations of the encoding names, like (on Solaris) "PCK" for "Shift_JIS".

This library fixes these flaws and provides a function

       const char * locale_charset (void);
It determines the current locale's character encoding, and canonicalizes it into one of the canonical names listed in config.charset. The result must not be freed; it is statically allocated. If the canonical name cannot be determined, the result is a non-canonical name.


As usual for GNU packages:
$ ./configure --prefix=/usr/local
$ make
$ make install

This library is used in

To integrate this library into your package:

Distribution: The libcharset directory of

libcharset package
Bruno Haible <>

Last modified: 18 October 2009.