            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
    EBCDIC compatible (not ASCII compatible, very rarely used)
        European languages
            IBM-{037,273,277,278,280,282,284,285,297,423,500,870,871,875,880},
            IBM-{905,924,1025,1026,1047,1112,1122,1123,1140,1141,1142,1143},
            IBM-{1144,1145,1146,1147,1148,1149,1153,1154,1155,1156,1157,1158},
            IBM-{1165,1166,4971}
        Semitic languages
            IBM-{424,425,12712,16804}
        Persian
            IBM-1097
        Thai
            IBM-{838,1160}
        Laotian
            IBM-1132
        Vietnamese
            IBM-{1130,1164}
        Indic languages
            IBM-1137

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 installs:
  - a library 'libiconv.so',
  - a header file '<iconv.h>'.

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

To use it in a package that uses GNU autoconf and GNU automake:
  - Use gnulib-tool to import the Gnulib module 'iconv'. It consists
    of a couple of *.m4 files (iconv.m4 and its dependencies) and a
    file 'build-aux/config.rpath'.
  - 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@). In Makefile.am files, the right place for
    these additions are the *_LDADD variables.


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
--------

    https://ftp.gnu.org/gnu/libiconv/libiconv-1.17.tar.gz

Homepage
--------

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

Bug reports
-----------

Report bugs
  - in the bug tracker at <https://savannah.gnu.org/projects/libiconv>
  - or by email to <bug-gnu-libiconv@gnu.org>.

Join the GNU project
--------------------

See file JOIN-GNU.


Bruno Haible <bruno@clisp.org>
