= International Components for Unicode
{c}
\b[International Components for Unicode], commonly abbreviated ICU, is a set of libraries providing <Unicode> text processing and <software internationalization> services. Its C/C++ and Java implementations support tasks such as <character encoding> conversion, <Unicode normalization>, text-boundary analysis, language-sensitive sorting and formatting. A <software locale> selects conventions for a language or region; it does not change the abstract numerical value being formatted.<ICU User Guide by the Unicode Consortium>[Introduction to ICU; ICU Services]{ref}
For a text example, a visually accented letter can be represented by the single <code point> `U+00E9` or by `U+0065 U+0301`, a base letter followed by a combining accent. Those sequences differ as raw code-point arrays. A <Unicode normalization> service can bring these canonically equivalent sequences into the same normalization form before a comparison. This is distinct from translating a word or deciding a language-specific sort order.<Unicode Normalization Forms by the Unicode Consortium>[§§1.1–1.3: canonical equivalence and normalization]{ref}
Such services make a useful division of labor: the application supplies meaning and policy, while a library implements detailed text and formatting rules. Storing text as <UTF-8> alone does not implement <software internationalization>; the program must still handle boundaries, comparisons, numbers, dates and displayed messages appropriately.<ICU User Guide by the Unicode Consortium>[ICU Services; Locales and Resources; Formatting]{ref}
Back to article page