国际化组件 Unicode (ICU) 函数库
ICU (International Components for Unicode)是為軟件應(yīng)用提供Unicode和全球化支持的一套成熟、廣泛使用的C/C++、Java和.NET 類庫(kù)集,可在所有平臺(tái)的C/C++、Java和C# 軟件上獲得一致的結(jié)果,用于支持軟件國(guó)際化的開源項(xiàng)目, 軟件開發(fā)者幾乎可以使用ICU 解決任何國(guó)際化的問(wèn)題,根據(jù)各地的風(fēng)俗和語(yǔ)言習(xí)慣,實(shí)現(xiàn)對(duì)數(shù)字、貨幣、時(shí)間、日期、和消息的格式化、解析,對(duì)字符串進(jìn)行大小寫轉(zhuǎn)換、整理、搜索和排序等功能。ICU的主頁(yè)是http://www.icu-project.org/
ICU首先是由Taligent公司開發(fā)的,Taligent公司被合并為IBM公司全球化認(rèn)證中心的Unicode研究組后,ICU由IBM和開源組織合作繼續(xù)開發(fā)。開始ICU只有Java平臺(tái)的版本,后來(lái)這個(gè)平臺(tái)下的ICU類被吸納入SUN公司開發(fā)的JDK1.1,并在JDK以后的版本中不斷改進(jìn)。C++和C平臺(tái)下的ICU是由JAVA平臺(tái)下的ICU移植過(guò)來(lái)的,移植過(guò)的版本被稱為ICU4C,來(lái)支持這C/C++兩個(gè)平臺(tái)下的國(guó)際化應(yīng)用。ICU4J和ICU4C區(qū)別不大,但由于ICU4C是開源的,并且緊密跟進(jìn)Unicode標(biāo)準(zhǔn),ICU4C支持的Unicode標(biāo)準(zhǔn)總是最新的;同時(shí),因?yàn)镴AVA平臺(tái)的ICU4J的發(fā)布需要和JDK綁定,ICU4C支持Unicode標(biāo)準(zhǔn)改變的速度要比ICU4J快的多。在Linux 操作系統(tǒng)上,.NET Core 使用ICU的全球化API, 從 .NET 5.0 開始,如果應(yīng)用在 Windows 10 2019 年 5 月更新或更高版本上運(yùn)行,.NET 庫(kù)將使用 ICU 全球化 API。.NET 5 統(tǒng)一使用ICU, 引入此更改的原因有兩個(gè):
應(yīng)用跨平臺(tái)(包括 Linux、macOS 和 Windows)具有相同的全球化行為。
應(yīng)用可以通過(guò)使用自定義 ICU 庫(kù)來(lái)控制全球化行為。
ICU的功能主要有:
代碼頁(yè)轉(zhuǎn)換: 對(duì)文本數(shù)據(jù)進(jìn)行Unicode、幾乎任何其他字符集或編碼的相互轉(zhuǎn)換。ICU的轉(zhuǎn)化表基于IBM過(guò)去幾十年收集的字符集數(shù)據(jù),在世界各地都是最完整的。
排序規(guī)則(Collation): 根據(jù)特定語(yǔ)言、區(qū)域或國(guó)家的管理和標(biāo)準(zhǔn)比較字?jǐn)?shù)串。ICU的排序規(guī)則基于Unicode排序規(guī)則算法加上來(lái)自公共區(qū)域性數(shù)據(jù)倉(cāng)庫(kù)(Common locale data repository)的區(qū)域特定比較規(guī)則。
格式化: 根據(jù)所選區(qū)域設(shè)置的慣例,實(shí)現(xiàn)對(duì)數(shù)字、貨幣、時(shí)間、日期、和利率的格式化。包括將月和日名稱轉(zhuǎn)換成所選語(yǔ)言、選擇適當(dāng)縮寫、正確對(duì)字段進(jìn)行排序等。這些數(shù)據(jù)也取自公共區(qū)域性數(shù)據(jù)倉(cāng)庫(kù)。
時(shí)間計(jì)算: 在傳統(tǒng)格里歷基礎(chǔ)上提供多種歷法。提供一整套時(shí)區(qū)計(jì)算API。
Unicode支持: ICU緊密跟進(jìn)Unicode標(biāo)準(zhǔn),通過(guò)它可以很容易地訪問(wèn)Unicode標(biāo)準(zhǔn)制定的很多Unicode字符屬性、Unicode規(guī)范化、大小寫轉(zhuǎn)換和其他基礎(chǔ)操作。
正則表達(dá)式: ICU的正則表達(dá)式全面支持Unicode并且性能極具競(jìng)爭(zhēng)力。
Bidi: 支持不同文字書寫順序混合文字(例如從左到右書寫的英語(yǔ),或者從右到左書寫的阿拉伯文和希伯來(lái)文)的處理。
文本邊界: 在一段文本內(nèi)定位詞、句或段落位置、或標(biāo)識(shí)最適合顯示文本的自動(dòng)換行位置。
參考:
https://docs.microsoft.com/zh-cn/dotnet/core/compatibility/globalization
總結(jié)
以上是生活随笔為你收集整理的国际化组件 Unicode (ICU) 函数库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何做好一个开源项目之徽章(二)
- 下一篇: 将微服务部署到 Azure Kubern