            GNU LIBICONV - character set conversion library

This library provides an iconv() implementation, for use on systems which
don't have one, or whose implementation cannot convert from/to Unicode.

It provides support for the encodings:

    European languages
        ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16},
        KOI8-R, KOI8-U, KOI8-RU,
        CP{1250,1251,1252,1253,1254,1257}, CP{850,866,1131},
        Mac{Roman,CentralEurope,Iceland,Croatian,Romania},
        Mac{Cyrillic,Ukraine,Greek,Turkish},
        Macintosh
    Semitic languages
        ISO-8859-{6,8}, CP{1255,1256}, CP862, Mac{Hebrew,Arabic}
    Japanese
        EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1,
        ISO-2022-JP-MS
    Chinese
        EUC-CN, HZ, GBK, CP936, GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS,
        BIG5-HKSCS:2004, BIG5-HKSCS:2001, BIG5-HKSCS:1999, ISO-2022-CN,
        ISO-2022-CN-EXT
    Korean
        EUC-KR, CP949, ISO-2022-KR, JOHAB
    Armenian
        ARMSCII-8
    Georgian
        Georgian-Academy, Georgian-PS
    Tajik
        KOI8-T
    Kazakh
        PT154, RK1048
    Thai
        ISO-8859-11, TIS-620, CP874, MacThai
    Laotian
        MuleLao-1, CP1133
    Vietnamese
        VISCII, TCVN, CP1258
    Platform specifics
        HP-ROMAN8, NEXTSTEP
    Full Unicode
        UTF-8
        UCS-2, UCS-2BE, UCS-2LE
        UCS-4, UCS-4BE, UCS-4LE
        UTF-16, UTF-16BE, UTF-16LE
        UTF-32, UTF-32BE, UTF-32LE
        UTF-7
        C99, JAVA
    Full Unicode, in terms of 'uint16_t' or 'uint32_t'
        (with machine dependent endianness and alignment)
        UCS-2-INTERNAL, UCS-4-INTERNAL
    Locale dependent, in terms of 'char' or 'wchar_t'
        (with machine dependent endianness and alignment, and with OS and
        locale dependent semantics)
        char, wchar_t
        The empty encoding name "" is equivalent to "char": it denotes the
        locale dependent character encoding.

When configured with the option --enable-extra-encodings, it also provides
support for a few extra encodings:

    European languages
        CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125}
    Semitic languages
        CP864
    Japanese
        EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3
    Chinese
        BIG5-2003 (experimental)
    Turkmen
        TDS565
    Platform specifics
        ATARIST, RISCOS-LATIN1

It can convert from any of these encodings to any other, through Unicode
conversion.

It has also some limited support for transliteration, i.e. when a character
cannot be represented in the target character set, it can be approximated
through one or several similarly looking characters. Transliteration is
activated when "//TRANSLIT" is appended to the target encoding name.

libiconv is for you if your application needs to support multiple character
encodings, but that support lacks from your system.


Installation
------------

As usual for GNU packages:

    $ ./configure --prefix=[[PREFIX]]     where [[PREFIX]] is e.g. $HOME/local
    $ make
    $ make install

After installing GNU libiconv for the first time, it is recommended to
recompile and reinstall GNU gettext, so that it can take advantage of
libiconv.

On systems other than GNU/Linux, the iconv program will be internationalized
only if GNU gettext has been built and installed before GNU libiconv. This
means that the first time GNU libiconv is installed, we have a circular
dependency between the GNU libiconv and GNU gettext packages, which can be
resolved by building and installing either
  - first libiconv, then gettext, then libiconv again,
or (on systems supporting shared libraries, excluding AIX)
  - first gettext, then libiconv, then gettext again.
Recall that before building a package for the second time, you need to erase
the traces of the first build by running "make distclean".

This library can be built and installed in two variants:

  - The library mode. This works on all systems, and uses a library
    'libiconv.so' and a header file '<iconv.h>'. (Both are installed
    through "make install".)

    To use it, simply #include <iconv.h> and use the functions.

    To use it in an autoconfiguring package:
    - If you don't use automake, append m4/iconv.m4 to your aclocal.m4
      file.
    - If you do use automake, add m4/iconv.m4 to your m4 macro repository.
    - Add to the link command line of libraries and executables that use
      the functions the placeholder @LIBICONV@ (or, if using libtool for
      the link, @LTLIBICONV@). If you use automake, the right place for
      these additions are the *_LDADD variables.
    Note that 'iconv.m4' is also part of GNU gnulib, available through
    the gnulib module 'iconv'.

  - The libc plug/override mode. This works on GNU/Linux, Solaris and OSF/1
    systems only. It is a way to get good iconv support without having
    glibc-2.1.
    It installs a library 'preloadable_libiconv.so'. This library can be used
    with LD_PRELOAD, to override the iconv* functions present in the C library.

    On GNU/Linux and Solaris:
        $ export LD_PRELOAD=[[PREFIX]]/lib/preloadable_libiconv.so

    On OSF/1:
        $ export _RLD_LIST=[[PREFIX]]/lib/preloadable_libiconv.so:DEFAULT

    A program's source need not be modified, the program need not even be
    recompiled. Just set the LD_PRELOAD environment variable, that's it!


Copyright
---------

The libiconv and libcharset _libraries_ and their header files are under LGPL,
see file COPYING.LIB.

The iconv _program_ and the documentation are under GPL, see file COPYING.


Download
--------

    http://ftp.gnu.org/gnu/libiconv/libiconv-1.15.tar.gz

Homepage
--------

    http://www.gnu.org/software/libiconv/

Bug reports to
--------------

    <bug-gnu-libiconv@gnu.org>


Bruno Haible <bruno@clisp.org>
