GNU Libidn is a fully documented implementation of the Stringprep, Punycode and IDNA 2003 specifications. Libidn’s purpose is to encode and decode internationalized domain names.