Download ICU 54


ICU is the premier library for software internationalization. For general information about ICU — what it is, why it is valuable, and who uses it — see the ICU homepage.

ICU 54 is a major release of ICU, with new features, new APIs and many bug fixes in data and code. It supports the latest versions of the Unicode locale data (CLDR 26, September 2014) and Unicode Standard (Unicode 7.0, June 2014). The improvements include 72 new measurement units, Unihan radical-stroke collation moved into root, new RBNF PluralFormat syntax, dictionary-based word and line break for Burmese, support for short locale display names, compatibility support for IANA time zone data abbreviations, a tech preview of FilteredBreakIterator using ULI break data, ICU4C thread safety fixes, and the ability to build ICU4C Paragraph Layout with HarfBuzz.

Significant changes since ICU 53 include the following:

Common Changes

    • Unicode 7.0: Unicode 7.0 adds a total of 2,834 characters, encompassing 23 new scripts, two currency symbols (manat & ruble), many new pictographic and geometric symbols, and character additions to many existing scripts.

    • CLDR 26: 77 languages with 100% modern coverage, more & improved data, many more measurement units

  • Time zone data: 2014h

    • Collator.getInstance(locale) handles all collation settings locale keywords (see User Guide, #8260)

    • The root collator sorts Han characters in Unihan radical-stroke order, rather than in UCA implicit-weights order. Correspondingly, most of the mappings were removed from CJK collation="unihan" tailorings. (#11042)

      • (The ICU4C source files include the file which is smaller by some 300kB and uses Han implicit weights. It can be used by modifying the data makefile.)

  • Cash amount formatting. (#10344)

    • ScientificFormatHelper, scientific number formatting with common superscript notation. (#10046, #10837)

    • New PluralFormat syntax (e.g. "$(ordinal,one{st}two{nd}few{rd}other{th})$") was added to RuleBasedNumberFormat. (#10880, #11064)

  • Units data moved to separate files for easier customization of resource data (#11092)

    • RelativeDateTimeFormatter supports abbreviated unit names. (#10884)

  • DateFormatSymbols getters and setters for yearNames and zodiacNames (from cyclicNameSets for e.g. Chinese lunar calendar). (#9385)

  • Fixed serious inaccuracies in islamic-umalqura date conversions. (#10695)

    • New constants for [U]DisplayContext permit specification of either short or long versions of locale display names. (#10968)

    • New dictionary-based word and line break for Burmese language (Myanmar script). (#10326)

    • FilteredBreakIterator, a tech preview leveraging ULI sentence break suppression data from CLDR, is available by default for both C and J. (#10990, #11029)

    • BCP 47 Unicode locale extension (-u- extension) key/type converter APIs (#8951)

    • IANA tz database abbreviation compatibility support (#10934)

    • Charset conversion from Unicode to a charset ignores/skips default-ignorable code points that cannot be mapped (#10551)

    • Added tech-preview (@internal) API for per unit formatting in MeasureFormat, such as "500 meters per minute" (#10999)

ICU4C Specific Changes

    • Thread safety fixes (#10295, #10767, #10803, #10805, #10865, #10908, #11051)

    • NFC/NFD normalization is usable again without loading any data files (#9644)

    • Collation data cached, using new common cache (#10802)

    • u_fopen variant support file names in UTF-16 (#10038)

    • Time zone data loading can be forced to separate files, to facilitate updates. (#10942)

    • Break Iteration, dictionary based breaking now works correctly with UTF-8 text. (#8550)

    • C++11 "override" and "final" keywords added (#10347)

      • Note: If your application subclasses something which the ICU team has marked as "not for subclassing", you may disable these keywords by defining CPPFLAGS=-DU_FINAL= etc when building ICU). This usage is not recommended use of ICU as the classes are not designed to be subclassed. Please file an ICU ticket if you have a concern about this feature or a specific subclass (or need additional API).

    • Paragraph Layout (not deprecated) can be built against HarfBuzz instead of the deprecated ICU LayoutEngine. (#11023)

    • Deprecations:

ICU4J Specific Changes

    • More APIs taking JDK Locale (#10836)

    • Smaller ICU resource bundle memory footprint (#10940)

    • ICU4J can read ICU4C data files (single files or .dat packages) which are memory-mapped; each file can be little-endian or big-endian (but not EBCDIC) (#9661)

      • Set the in com/ibm/icu/ or via JVM properties.

    • UnicodeSet: Many methods broadened to CharSequence or Iterable, new class UnicodeSetSpanner for string processing (#9131)

    • Provided cleaner and more accurate API for accessing weekend data for different countries. (#10560)

    • Added tech-preview (@internal) API for ranges of units with correct plurals, such as “1-5 kilograms”. (#10600)

Tickets Fixed

Complete list of tickets fixed in this release.

Known Issues

    • C/J: Spoof Checker not yet updated to Unicode 7.0 security data (#11262)

    • C: In some environments (newer clang, older gcc/libstdc++) ICU may fail to build, see #10272 for workaround.

    • J: With JDK 8 javadoc, the build target for API reference document generation will fail. (#10988)

  • J: java.lang.NoSuchMethodError on JRE 5 and JRE 6 (#11326). This issue was fixed in ICU4J 54.1.1.

      • See also the source code change for related ticket #11342 (which is not in ICU4J 54.1.1).

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

Updates in ICU 54.2

    • New Japanese era Reiwa (令和) support

    • IANA tzdata2019a

ICU4C Download

Latest ICU4C 54 Release

Version: 54.2

Release Date: 2019-04-11

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

Previous ICU4C 54 Releases

Version: 54.1

Release Date: 2014-10-01

  • API Changes since ICU4C 53

  • Readme

    • Note: The release source files uploaded on 2014-10-1 do not contain prebuilt data. These have been replaced with source files containing prebuilt data on 2014-10-3. There are no changes in the source code.

ICU4C Supported Platforms

Key to testing frequency

Frequently tested

ICU will work on these platforms with these compilers

Rarely tested

ICU has been ported to these platforms but may not have been tested there recently

ICU4J Download

Latest ICU Release

Version: 54.2

Release Date: 2019-04-11

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

Maven dependency:






Previous ICU4J 54 Releases

Version: 54.1.1/Java 8 Locale Service Provider support update

Release Date: 2015-06-10

icu4j-localespi-54_1_1.jar included in 54.1.1 release (2014-10-09) does not work well on Java 8 (it works fine on Java 6 and 7).

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

Version: 54.1.1

Release Date: 2014-10-09

  • Readme

    • Changes since 54.1

      • Fixed java.lang.NoSuchMethodError problem on JRE 5 and JRE 6 (#11326)

Note: This update only includes some build script changes and updated binaries built with proper configuration supporting Java 5 and Java 6 runtime evironment. ICU4J users already downloaded the previous version (54.1) running ICU4J on JRE 7 and JRE 8 do not need this update.

Version: 54.1

Release Date: 2014-10-01