ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms and between C/C++ and Java software.
As quoted from the website, some features of ICU
- Code Page Conversion: Convert text data to or from Unicode and nearly any other character set or encoding. ICU’s conversion tables are based on charset data collected by IBM over the course of many decades, and is the most complete available anywhere.
- Collation: Compare strings according to the conventions and standards of a particular language, region or country. ICU’s collation is based on the Unicode Collation Algorithm plus locale-specific comparison rules from the Common Locale Data Repository, a comprehensive source for this sort of data.
- Formatting: Format numbers, dates, times and currency amounts according the conventions of a chosen locale. This includes translating month and day names into the selected language, choosing appropriate abbreviations, ordering fields correctly, etc. Again, ICU uses data from the Common Locale Data Repository.
- Unicode Support: ICU closely tracks the Unicode standard, providing easy access to all of the many Unicode character properties, Unicode Normalization, Case Folding and other fundamental operations as specified by the Unicode Standard.
- Regular Expression: ICU’s regular expressions fully support Unicode while providing very competitive performance.
- Bidi: support for handling text containing a mixture of left to right (English) and right to left (Arabic or Hebrew) data.
- Text Boundaries: Locate the positions of words, sentences, paragraphs within a range of text, or identify locations that would be suitable for line wrapping when displaying the text.