29

国际化组件 Unicode (ICU) 函数库

 3 years ago
source link: http://www.cnblogs.com/shanyou/p/13621728.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ICU (International Components for Unicode)是为软件应用提供Unicode和全球化支持的一套成熟、广泛使用的C/C++、Java和.NET 类库集,可在所有平台的C/C++、Java和C# 软件上获得一致的结果,用于支持软件国际化的开源项目, 软件开发者几乎可以使用ICU 解决任何国际化的问题,根据各地的风俗和语言习惯,实现对数字、货币、时间、日期、和消息的格式化、解析,对字符串进行大小写转换、整理、搜索和排序等功能。ICU的主页是 http://www.icu-project.org/

ICU首先是由Taligent公司开发的,Taligent公司被合并为IBM公司全球化认证中心的Unicode研究组后,ICU由IBM和开源组织合作继续开发。开始ICU只有Java平台的版本,后来这个平台下的ICU类被吸纳入SUN公司开发的JDK1.1,并在JDK以后的版本中不断改进。C++和C平台下的ICU是由JAVA平台下的ICU移植过来的,移植过的版本被称为ICU4C,来支持这C/C++两个平台下的国际化应用。ICU4J和ICU4C区别不大,但由于ICU4C是开源的,并且紧密跟进Unicode标准,ICU4C支持的Unicode标准总是最新的;同时,因为JAVA平台的ICU4J的发布需要和JDK绑定,ICU4C支持Unicode标准改变的速度要比ICU4J快的多。在Linux 操作系统上,.NET Core 使用ICU的全球化API, 从 .NET 5.0 开始,如果应用在 Windows 10 2019 年 5 月更新或更高版本上运行,.NET 库将使用 ICU 全球化 API。.NET 5 统一使用ICU, 引入此更改的原因有两个:

  • 应用跨平台(包括 Linux、macOS 和 Windows)具有相同的全球化行为。
  • 应用可以通过使用自定义 ICU 库来控制全球化行为。

ICU的功能主要有:

  • 代码页转换: 对文本数据进行Unicode、几乎任何其他字符集或编码的相互转换。ICU的转化表基于IBM过去几十年收集的字符集数据,在世界各地都是最完整的。
  • 排序规则(Collation): 根据特定语言、区域或国家的管理和标准比较字数串。ICU的排序规则基于Unicode排序规则算法加上来自公共区域性数据仓库(Common locale data repository)的区域特定比较规则。
  • 格式化: 根据所选区域设置的惯例,实现对数字、货币、时间、日期、和利率的格式化。包括将月和日名称转换成所选语言、选择适当缩写、正确对字段进行排序等。这些数据也取自公共区域性数据仓库。
  • 时间计算: 在传统格里历基础上提供多种历法。提供一整套时区计算API。
  • Unicode支持: ICU紧密跟进Unicode标准,通过它可以很容易地访问Unicode标准制定的很多Unicode字符属性、Unicode规范化、大小写转换和其他基础操作。
  • 正则表达式: ICU的正则表达式全面支持Unicode并且性能极具竞争力。
  • Bidi: 支持不同文字书写顺序混合文字(例如从左到右书写的英语,或者从右到左书写的阿拉伯文和希伯来文)的处理。
  • 文本边界: 在一段文本内定位词、句或段落位置、或标识最适合显示文本的自动换行位置。

参考:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK