Libidn is a library that supports encoding and decoding of internationalized domain names, available in C, C#, and Java under GNU Lesser General Public License. It has a successor called GNU libidn2 that implements IDNA 2008 and TR46, and supports various profiles for Stringprep implementation. The library's APIs include Stringprep, Punycode, IDNA, and TLD functionalities, and it can be built into GNU Libc for IDN processing. The library is available on various platforms and supports different programming languages, with a GNU General Public License.
don't have tea/gui yet? download here
Copy the tea one-liner above into your terminal to install libidn2. tea will interpret the documentation and take care of any dependencies.