Libidn2 README -- Introduction information
Libidn2 is a free software implementation of IDNA2008, Punycode and TR46. Its purpose is to encode and decode internationalized domain names.
The library contains functionality to convert internationalized domain names to and from ASCII Compatible Encoding (ACE), following the IDNA2008 and TR46 standards.
The API consists of two main functions,
idn2_to_ascii_8z for converting data
from UTF-8 to ASCII Compatible Encoding (ACE), and
idna_to_unicode_8z8z to convert
ACE names into UTF-8 format. There are several variations of these main
functions, which accept UTF-32, or input in the local system encoding. All
functions assume zero-terminated strings.
This library is backwards (API) compatible with the libidn library.
idna.h header with
idn2.h into a program is
sufficient to switch the application from IDNA2003 to IDNA2008 as supported
by this library.
Libidn2 is believed to be a complete IDNA2008 and TR46 implementation, but has yet to be as extensively used as the IDNA2003 Libidn library.
Obtaining the source
The homepage of libidn2: https://www.gnu.org/software/libidn/#libidn2
Libidn2 uses GNU libunistring for Unicode processing and GNU libiconv for character set conversion. See the following links for more information on these packages:
Note that the iconv dependency is optional, and required only for the functions involving locale to UTF conversions.
Estimating code coverage
- lcov (for code coverage)
To test the code coverage of the test suite use the following:
$ ./configure --enable-code-coverage $ make && make check && make code-coverage-capture
The current coverage report can be found here.
It is possible to cross-compile libidn2. It is expected your cross compiler
toolchain to have a specific prefix to the target host. For example
compiling for Windows with mingw64 (with prefix
can be done the following way:
./configure --host=i686-w64-mingw32 && make
./bootstraping you find the
INSTALL file in the main
project directory including generic instructions about cross-compilation.
The installed C library libidn2 is dual-licensed under LGPLv3+|GPLv2+, while the rest of the package is GPLv3+. See the file COPYING for detailed information.