Download ICU 55

ICU is the premier library for software internationalization, used by a wide array of companies and organizations. The following describes the changes in version 55.


The features for this release include support of CLDR 27 (with a major cleanup of region locales, among many other improvements), formatting for scientific notation ("1.2 × 10³"), an update to Unicode 7.0 data for spoof-checking, narrow AM/PM markers ("7:45p"), and various performance enhancements. For C/C++, there are new methods for flexible dates ("Nov 10", or "Sept 2015"), named capture groups for regular expressions, formatting of compound units ("3.5 meters per second"), new C wrappers, and independent timezone resource loading. ICU4J has been improved and tested for using ICU4C data and for running on Android.

For more details, including migration issues, see below.

Common Changes

    • CLDR 27.0.1: For details of the many changes in CLDR, see CLDR 27.

    • Collation:

      • Most of the Cyrillic contractions have been removed from the default (root) order. This makes the default Cyrillic collation faster, and it avoids having to suppress unnecessary contractions in most of the Cyrillic tailorings. The Cyrillic tailorings have been updated. (#11375, CLDR #7246)

      • Scripts can be reordered individually, instead of only in certain groups. (CLDR #7382, ICU #11449)

      • An emoji collation is now available for emoji palettes. See UTR51: Unicode Emoji.

    • ScientificNumberFormatter: (#10952) Easier-to-use API for formatting numbers in "normal" scientific notation (rather than programmer "E" notation). Replaces the ScientificFormatHelper (@draft ICU 54).

  • "UK" measurement system added, and returned for GB. (#11357)

    • Was @draft ICU 55 in milestone 1, @stable in the release. (#11444)

  • Unicode algorithms fall back to root, not to unrelated default locale (#10823)

    • Root behavior is intended, appropriate, and well-defined for collation, segmentation, case mappings — unless language-specific data overrides it.

    • Behavior fixed where code used to fall back to the default locale: Collator.getInstance() (Java & C/C++) & BreakIterator.getInstance() (Java only)

  • Locale display name to use localized currency keyword value such as "English (US dollar)" instead of "English (Currency:USD)". (#11415)

    • Spoof Check data update to Unicode 7.0. Note that identifier skeletons have changed, with possible compatibility considerations. (#11262, #11446)

    • DateFormat support (format and parse) for narrow AM/PM markers ("7:45p"), using date pattern field “aaaaa”. (#11510)

  • Addition of line break strict/normal/loose variants for support of CSS3. BreakIterator variants can be specified in the [U]Locale using -u- extension key “lb” with possible values “strict”, “normal”, and “loose”. (#9379)

    • MeasureFormat.formatMeasurePerUnit() API added (e.g., "3.5 meters per second"; API modified from ICU 54 tech preview) (#11303, #11445)

  • The IDNA2003 API has been deprecated, to encourage migration away from the obsolete standard. Use the API for IDNA2008 / UTS #46 instead via uidna_openUTS46() or class IDNA. (#8477)

ICU4C Specific Changes

    • DateFormat::createInstanceForSkeleton: methods that allow the creation of DateFormat objects from skeleton strings as in JAVA. (#11139)

    • Create DateFormat objects up to 5x faster than before.

    • Easier time zone data updates: Time zone resources may be loaded separately from other ICU data, simplifying the procedures for updating an ICU installation to the latest time zone data. (#10942)

    • New C API wrappers:

      • A new date format API udat_formatCalendar() allowing C API users to specify a calendar as a parameter, instead of UDate. This function does not need to create a defensive copy of a calendar, therefore, performs better in a tight loop. (#11293)

      • New C header ulistformatter.h, C wrapper for ListFormatter: type UListFormatter, functions ulistfmt_open, ulistfmt_close, ulistfmt_format. (#11549)

      • New C header ufieldpositer.h, C wrapper for FieldPositionIterator: type UFieldPositionIterator, functions ufieldpositer_open, ufieldpositer_close, ufieldpositer_next. (#11553)

      • New udat.h format calls that set UFieldPositionIterator: udat_formatForFields, udat_formatCalendarForFields.(#11553)

  • New UCONFIG_ONLY_HTML_CONVERSION build option to remove code for encodings that are discouraged or forbidden by the web encoding standard. (#11296)

  • Regular Expressions: Named Capture Groups now supported (#5312). Added \R, \h, \H, \v, \V pattern meta-characters. (#11393)

  • TimeZone::detectHostTimeZone() detects the current host time zone. (#11358)

ICU4J Specific Changes

  • ICU4J has been improved and tested for using ICU4C data and for running on Android.

    • Convenient new LocaleDisplayNames.getUiList() API for user-friendly presentation of a list of languages/locales. (#10488)

  • File and other resources are closed reliably as soon as possible. (#11463)

Known Issues

  • ICU4C 55.1 is known to fail under Solaris/GCC and SmartOS/GCC. A fix is in progress. (#11435)

  • ICU4C 55.1 Transliterator thread safety problem. Fixed in svn trunk, r37342 and r37414. (#11603)

  • ICU4C before version 56 does not compile under Microsoft Visual Studio 2015 (#11689)

Migration Issues

  • There are details on migration issues that may result from CLDR changes on CLDR 27 Migration.

  • The measurement system for GB is now "UK", which may result in implementations incorrectly returning non-metric values.

  • Application-specific Cyrillic collation tailorings (other than those in CLDR/ICU) may need to be adjusted for the removal of most Cyrillic contractions from the default/root order. Contractions need to be added, or need not be suppressed any more. (See CLDR #7246)

    • Spoof Check identifier skeletons have changed, with possible compatibility considerations. (#11262, #11446)

    • Layout Engine: breaking API change: The insecure pure virtual method LEFontInstance::getFontTable(LETag) (1-argument) was removed, and the method LEFontInstance::getFontTable(LETag, size_t&) (2-arguments) has been changed to be pure virtual (must be implemented). See the LEFontInstance API docs. (#11450)

Updates in ICU 55.2

    • New Japanese era Reiwa (令和) support

    • IANA tzdata2019a

ICU4C Download

Latest ICU4C 55 Release

Version: 55.2

Release Date: 2019-04-11

Source and binary downloads are available on the git/GitHub tag page:

Previous ICU4C 55 Releases

Version: 55.1

Release Date: 2015-04-01

ICU4J Download

Latest ICU4J 55 Release

Version: 55.2

Release Date: 2019-04-11

Source and binary downloads are available on the git/GitHub tag page:

Maven dependency:






Previous ICU4J 55 Releases

Version: 55.1/Java 8 Locale Service Provider support update

Release Date: 2015-06-10

icu4j-localespi-55_1.jar included in 55.1 release (2015-04-01) does not work well on Java 8 (it works fine on Java 6 and 7).

The version below contains the fix (svn tag: release-55-1-localespi-java8-20150610). There are no changes in ICU4J core library code. Please refer ICU Trac ticket #11733 for the details.

Version: 55.1

Release Date: 2015-04-01