國際統一碼部件
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此條目可参照英語維基百科相應條目来扩充。 (2023年1月) |
國際統一碼部件(英語:International Components for Unicode,縮寫:ICU,中文譯名根據聯盟官方譯名[1])是成熟的C / C++和Java库的开源項目的函式庫,用於支援統一碼 、软件国际化和软件全球化。 ICU 可广泛移植到许多操作系统和环境中。對於不同平台上,以及在 C、C++ 和 Java 软件的应用程序,它可以提供相同的结果。IBM和许多其他公司赞助、支持和使用它。 [2]ICU 項目也已成為統一碼聯盟技术委员。
ICU 提供以下服务: 統一碼文本处理、完整字符属性和字符集转换; 統一碼正则表达式;完整的統一碼集;字符、单词和行边界;基於语言的定序和搜索;规范化、大小写转换和脚本音译;通過通用當地數據儲存庫(CLDR)提供全面的语言环境数据和资源包架构;多種日历和时区;以及基于规则的日期、时间、数字、货币和消息的格式化和解析。 ICU過去曾為阿拉伯語、希伯來語、印度語和泰語提供複雜文字編排服务,但在第 54 版中已弃用,并在第 58 版中完全删除,取而代之的是HarfBuzz 。 [3]
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的支持在更高版本中也可能受到限制(即构建取决于编译器支持)。 [4]自Windows 10版本 1703 起,ICU 已作为标准组件包含在Microsoft Windows中[5]。
ICU 过去一直使用UTF-16 ,但只有用於 Java;而 C/C++ 使用 UTF-8 [6],包括正确处理“非法 UTF-8”。 [7]
起源与发展
[编辑]1996 年初,Taligent 併入 IBM 後,昇陽電腦决定新的 Java 语言应该更好地支持国际化。由于 Taligent 拥有使用此类技术的经验并且地理位置接近,因此他们的 Text 和 International 小组被要求将国际类作为JDK 1.1 国际化API 貢獻JDK。 [8]该代码的很大一部分仍然存在于java.text和java.util包中。 Java 的后续版本都添加了进一步的国际化功能。
然后,Java 国际化类被移植到 C++ 和 C [9],称为 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。 [10] 2016 年 5 月,ICU 项目加入統一碼联盟成為其技術委員(ICU-TC),现在库源是以統一碼许可來分发。 [11]
MessageFormat
[编辑]MessageFormat 是 ICU 中的類別,它是一个格式化系统,允许使用任意数量的参数来控制复数形式( plural
、 selectordinal
),或使用更一般的選擇-切換樣式(select
)來處理如性的語法。这些语句可以嵌套。 [12] ICU MessageFormat 是通过将复数和选择系统添加到Java SE中的同名系统而创建的。
另見
[编辑]- Gnu GetText
- Graphite
- NetRexx (ICU 许可证)
- OpenType
- Pango
- Uconv
- 单字
参考
[编辑]- ^ Unicode Terminology: English - Traditional Chinese. www.unicode.org. [2021-11-17]. (原始内容存档于2021-10-10).
- ^ ICU - International Components for Unicode. site.icu-project.org. [2021-11-17]. (原始内容存档于2021-08-27).
- ^ Layout Engine - ICU User Guide. userguide.icu-project.org. [2021-11-17]. (原始内容存档于2021-08-28).
- ^ Download ICU 64 - ICU - International Components for Unicode. site.icu-project.org. [2019-10-20]. (原始内容存档于2021-07-01).
- ^ Chen, Raymond. How can I convert between IANA time zones and Windows registry-based time zones?. The Old New Thing. Microsoft. [2021-11-17]. (原始内容存档于2022-04-17).
- ^ UTF-8 - ICU User Guide. userguide.icu-project.org. [2018-04-03]. (原始内容存档于2021-04-17).
- ^ #13311 (change illegal-UTF-8 handling to Unicode "best practice"). bugs.icu-project.org. [2018-04-03]. (原始内容存档于2019-08-04).
- ^ Laura Werner. Getting Java ready for the world: A brief history of IBM and Sun's internationalization efforts. 1999 [2021-11-17]. (原始内容存档于2021-11-17).
- ^ ICU User Guide. userguide.icu-project.org. [2021-11-17]. (原始内容存档于2021-08-28).
- ^ ICU Project Management Committee. [2021-11-17]. (原始内容存档于2021-08-28).
- ^ ICU joins the Unicode Consortium. Unicode, Inc. 2016-05-16 [2016-08-01]. (原始内容存档于2021-11-17).
- ^ Formatting Messages. ICU User Guide. [2021-11-17]. (原始内容存档于2021-08-23).