國際統一碼部件

國際統一碼部件（，縮寫：ICU，中文譯名根據聯盟官方譯名）是成熟的C / C++和Java库的开源項目的函式庫，用於支援統一碼 、软件国际化和软件全球化。 ICU 可广泛移植到许多操作系统和环境中。對於不同平台上，以及在 C、C++ 和 Java 软件的应用程序，它可以提供相同的结果。IBM和许多其他公司赞助、支持和使用它。 ICU 項目也已成為統一碼聯盟技术委员。

ICU 提供以下服务： 統一碼文本处理、完整字符属性和字符集转换； 統一碼正则表达式；完整的統一碼集；字符、单词和行边界；基於语言的定序和搜索；规范化、大小写转换和脚本音译；通過通用當地數據儲存庫（CLDR）提供全面的语言环境数据和资源包架构；多種日历和时区；以及基于规则的日期、时间、数字、货币和消息的格式化和解析。 ICU過去曾為阿拉伯語、希伯來語、印度語和泰語提供複雜文字編排服务，但在第 54 版中已弃用，并在第 58 版中完全删除，取而代之的是HarfBuzz 。 

ICU 提供比 C 和 C++ 标准库更广泛的国际化设施。 ICU 67 支持Unicode 13.0并处理英國脫歐的問題。 ICU 64 支持Unicode 12.0 ，而 ICU 64.2 增加了对 Unicode 12.1 的支持，即当前日本令和时代的单一新符号（但对它的支持也已向后移植到 ICU 4.8.2 的旧 ICU 版本）。 ICU 58（支持 Unicode 9.0）是支持旧平台（如Windows XP 、 Windows Vista ）的最后一个版本。对AIX 、 Solaris和z/OS的支持在更高版本中也可能受到限制（即构建取决于编译器支持）。 自Windows 10版本 1703 起，ICU 已作为标准组件包含在Microsoft Windows中。

ICU 过去一直使用UTF-16 ，但只有用於 Java；而 C/C++ 使用 UTF-8 ，包括正确处理“非法 UTF-8”。

起源与发展 
1996 年初，Taligent 併入 IBM 後，昇陽電腦决定新的 Java 语言应该更好地支持国际化。由于 Taligent 拥有使用此类技术的经验并且地理位置接近，因此他们的 Text 和 International 小组被要求将国际类作为JDK 1.1 国际化API 貢獻JDK。 该代码的很大一部分仍然存在于java.text和java.util包中。 Java 的后续版本都添加了进一步的国际化功能。

然后，Java 国际化类被移植到 C++ 和 C ，称为 ICU4C（“ICU for C”）的库的一部分。 ICU 项目还提供了 ICU4J（“ICU for Java”），它添加了标准 Java 库中不存在的功能。 ICU4C 和 ICU4J 非常相似，但并不完全相同；例如，ICU4C 包含正则表达式的 API，而 ICU4J 則沒有。随着时间的推移，这两个框架都得到了增强，以支援統一碼和通用當地數據儲存庫的新功能。

1999 年，ICU 以开源项目的方式发布，原名称为 IBM Classes for Unicode，后来更名为 International Components For Unicode。  2016 年 5 月，ICU 项目加入統一碼联盟成為其技術委員（ICU-TC），现在库源是以統一碼许可來分发。

MessageFormat 
MessageFormat 是 ICU 中的類別，它是一个格式化系统，允许使用任意数量的参数来控制复数形式（  、  ），或使用更一般的選擇-切換樣式（）來處理如性的語法。这些语句可以嵌套。  ICU MessageFormat 是通过将复数和选择系统添加到Java SE中的同名系统而创建的。

另見 

 Gnu GetText
 Graphite
 NetRexx （ICU 许可证）
 OpenType
 Pango
 Uconv
 单字

参考

外部链接 

 官方網站 
 国际統一碼组件音譯服務 
 在线ICU编辑 

自由發展元件與函式庫
國際化與在地化
數碼字體排印
基于组件的软件工程
Unicode