国际统一码部件
此条目可参照英语维基百科相应条目来扩充。 (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 后,Sun微系统决定新的 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).