One of the worst mistakes to make is to write software that is not Unicode-enabled. Basically, Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. (http://www.unicode.org/). A really good quick explanation of Unicode is here: http://www.joelonsoftware.com/articles/Unicode.html
Unicode characters are used in URLs too, so make sure your code supports these:
IDNs are supported by all modern browsers and email programs.
The International Components for Unicode (ICU) software consists of components (subroutines, modules) that are available as source code and portable to different operating systems. ICU was originally written in Java, and later support to C and C++ has been added. The Java version is called ICU4J, and the C and C++ version is ICU4C.
ICU contains software components for several purposes: