ICU认识
翻译自官网:http://site.icu-project.org/
什么的是ICU
ICU是一种成熟的、广泛使用的C/C++和Java库集,为软件应用提供Unicode和全球化支持。ICU具有广泛的可移植性,在所有平台和C/C++和Java软件之间都有相同的结果。
ICU是根据非限制性开放源代码许可证发布的,该许可证适用于商业软件和其他开放源代码或免费软件。
功能
-
代码转换
将文本数据转换成或转换成Unicode以及几乎任何其他字符集或编码。ICU的转换表是基于IBM在过去几十年中收集到的字符集数据,是最完整的比任何地方。 -
排序
根据特定语言、地区或国家的惯例和标准比较字符串。ICU的排序基于Unicode排序算法以及来自通用区域设置数据存储库的特定于区域设置的比较规则,这是此类数据的综合源。 -
格式
根据所选区域设置的惯例设置数字、日期、时间和货币金额的格式。这包括将月份和日期名称转换为所选语言、选择适当的缩写、正确排序字段等。这些数据也来自通用的区域设置数据存储库。 -
时间计算
除了传统的公历外,还提供多种类型的日历。提供了一套完整的时区计算API。 -
Unicode支持
ICU密切跟踪Unicode标准,方便访问所有Unicode字符属性、Unicode规范化、大小写折叠和Unicode标准指定的其他基本操作。 -
正则表达式
ICU的正则表达式完全支持Unicode,同时提供非常有竞争力的性能。 -
bidi
支持处理包含从左到右(英语)和从右到左(阿拉伯语或希伯来语)数据混合的文本。 -
文本边界
在文本范围内定位单词、句子、段落的位置,或标识在显示文本时适合换行的位置。
为什么ICU4C
C语言和C++语言以及许多操作系统环境不能为Unicode和符合标准的文本处理服务提供完全支持。即使某些平台提供了良好的Unicode文本处理服务,可移植应用程序代码也不能利用它们。ICU4C库填补了这个空白。ICU4C为应用程序的软件全球化需求提供了一个开放、灵活、可移植的基础。ICU4C密切跟踪行业标准,包括Unicode和CLDR(公共区域设置数据存储库)。
关于CLDR
CLDR
参考URL: https://www.zhihu.com/topic/20104252/hot
CLDR 是 Unicode Consortium(Unicode 联盟)下属的一个项目,并不从属于 Unicode Standard(Unicode 标准,即我们一般说的 Unicode),它们是两个平行的项目。
为什么ICU4J
Java为全球程序提供了很强的基础,IBM和ICU团队在向Sun的Java提供全球化技术方面发挥了关键作用。但由于其(java)发布时间长,Java不能总是保持不断更新的标准。ICU团队继续扩展Java的Unicode和国际化支持,专注于提高性能,保持与Unicode标准的一致性,并提供更丰富的API,同时尽可能保持与原始Java文本和国际化API设计的兼容。
总结:java本身有相关国际化api,但是java发布周期比较长,使用ICU可以紧跟标准。
谁都在使用ICU
-
Companies and Organizations using ICU
公司和组织使用ICU
ABAS Software, Adobe, Amazon (Kindle), Amdocs, Apache, Appian, Apple, Argonne National Laboratory, Avaya, BAE Systems Geospatial eXploitation Products, BEA, BluePhoenix Solutions, BMC Software, Boost, BroadJump, Business Objects, caris, CERN, CouchDB, Debian Linux, Dell, Eclipse, eBay, EMC Corporation, ESRI, Facebook (HHVM), Firebird RDBMS, FreeBSD, Gentoo Linux, Google, GroundWork Open Source, GTK+, Harman/Becker Automotive Systems GmbH, HP, Hyperion, IBM, Inktomi, Innodata Isogen, Informatica, Intel, Interlogics, IONA, IXOS, Jikes, Library of Congress, LibreOffice, Mathworks, Microsoft, Mozilla, Netezza, Node.js, Oracle (Solaris, Java), Lawson Software, Leica Geosystems GIS & Mapping LLC, Mandrake Linux, OCLC, Progress Software, Python, QNX, Rogue Wave, SAP, SIL, SPSS, Software AG, SuSE, Sybase, Symantec, Teradata (NCR), ToolAware, Trend Micro, Virage, webMethods, Wine, WMS Gaming, XyEnterprise, Yahoo!, Vuo, and many others. -
Apache Projects
Harmony, Lucene search library, OpenOffice, PDFBox library, Solr search engine server, Tika metadata toolkits, Xalan XSLT, Xerces XML -
Products from IBM
DB2, Lotus, Websphere, Tivoli, Rational, AIX, i/OS, z/OS
Ascential Software, Cloudant, Cognos, PSD Print Architecture, COBOL, Host Access Client, InfoPrint Manager, Informix GLS, Language Analysis Systems, Lotus Notes, Lotus Extended Search, Lotus Workplace, WebSphere Message Broker, NUMA-Q, OTI, OmniFind, Pervasive Computing WECMS, Rational Business Developer and Rational Application Developer, SS&S Websphere Banking Solutions, Tivoli Presentation Services, Tivoli Identity Manager, WBI Adapter/ Connect/Modeler and Monitor/ Solution Technology Development/WBI-Financial TePI, Websphere Application Server/ Studio Workload Simulator/Transcoding Publisher, XML Parser.
-
Products from Google
Web Search, Google+, Chrome/Chrome OS, Android, Adwords, Google Finance, Google Maps, Blogger, Google Analytics, Google Groups, and others. -
Products from Apple
macOS (OS & applications), iOS (iPhone, iPad, iPod touch), watchOS & tvOS, Safari for Windows & other Windows applications and related support, Apple Mobile Device Support in iTunes for Windows. -
Products from Microsoft
-
Products from Harman/Becker
-
Products from Adobe
ICU用户向导
翻译自官方:http://userguide.icu-project.org/
ICU历史背景
ICU最初由泰利根公司开发。Taligent团队后来成为位于Cupertino的IBM®全球化能力中心的Unicode小组。该团队已经收到了来自全球开放源码社区的大量输入。
在TaligTin开发的Java类被纳入Sun®微系统开发的Java开发工具包(JDK)1.1中。然后将这些类移植到C++中,之后一些类也被移植到C中。这些类提供了用于在C、C++或Java编程语言中编写全局应用程序的国际化工具。
Java的ICU(ICU4J)包括这些类中的一些增强版本,以及补充JDK中类的附加类。C和C++版本的相同的国际功能在ICU可用于C(ICU4C)。由于语言差异和新功能,API略有不同。例如,ICU4C包含字符转换器API。
ICU4J和ICU4C保持相同的发展目标。它们都跟踪Java国际化API的添加,并实现最新发布的Unicode标准。它们还维护一个单一的、可移植的源代码库。
ICU和开源小组的所有人都很感谢您花时间了解我们的技术。我们已经将我们的最大努力投入到这些开放组件中,并期待您的问题、评论和建议。
ICU4J FAQ
-
ICU和JDK的比较:有什么区别?
对比图 http://site.icu-project.org/charts/comparison -
如何在系统上获取ICU4J库的版本信息?
You can get the ICU4J version information by public API class com.ibm.icu.util.VersionInfo. The static field VersionInfo.ICU_VERSION contains the current ICU4J library version information.
Since ICU4J 4.6, ICU4J jar file includes Main-Class that prints out the ICU version information like below -
$ java -jar icu4j.jar
International Component for Unicode for Java 4.8
Implementation Version: 4.8
Unicode Data Version: 6.0
CLDR Data Version: 2.0
Time Zone Data Version: 2011g
3. 如何创建自己的字典文件?
现在,你不能。我们没有包括我们用来创建字典文件的工具,因为它非常粗糙和非常慢。字典文件的格式在将来也很可能会改变。如果您真的想创建自己的字典文件,请与我们联系,我们将看到我们可以做什么。