必威电竞|足球世界杯竞猜平台

ICU
來源:互聯網

ICU(International Component for Unicode/Unicode國際化組件) 是 Unicode 支持、軟件國際化、全球化的一個成熟的、廣泛應用的庫,是一個由 IBM 贊助、支持和使用的,基于"IBM公共許可證",用于支持軟件國際化的開源項目。ICU 項目是 Unicode 聯盟的技術委員會,由 IBM 和許多其他公司贊助、支持和使用。自 Windows 10 版本 1703 起,ICU 已作為 Microsoft Windows 的標準組件包含在內。

ICU 提供的函數實現了標準的 Unicode Collation Algorithm(UCA)以及許多文化調整功能。很容易將適當的 ICU 函數組合成一個 UDF(用戶定義函數),從而讓 DB2 可以充分利用 ICU 的排序支持。(DB2 for Linux, UNIX, and Windows 就是使用 ICU 庫來實現在 Unicode 數據上支持的三種文化排序)此外,ICU 還提供了全面的區域數據和資源包架構、多個日歷和時區支持,以及基于規則的日期、時間、數字、貨幣和消息的格式化和解析。

名稱由來

這個庫為 C 和 Java 編程語言提供了一整套操作 Unicode 數據的函數。這個庫是在一種無限制的開放源碼許可證下發布的,這使它可以在許多應用程序中使用。ICU 提供了廣泛的國際化功能,包括 Unicode 文本處理、字符屬性和字符集轉換、Unicode 正則表達式、字符、單詞和行邊界處理、區分語言的排序和搜索、規范化、大小寫轉換和腳本音譯等。

發展歷程

ICU首先是由Taligent公司開發的,Taligent公司現在被合并為IBM公司全球化認證中心的Unicode研究組,然后ICU由IBM和開源組織合作繼續開發,開源組織給與了ICU極大的幫助。開始ICU只有Java平臺的版本,后來這個平臺下的ICU類被吸納入SUN公司開發的JDK1.1,并在JDK以后的版本中不斷改進。C++和C平臺下的ICU是由JAVA平臺下的ICU移植過來的,移植過的版本被稱為ICU4C(ICU for C),來支持這C/C++兩個平臺下的國際化應用。ICU 于 1999 年作為開源項目發布,名稱為 IBM Unicode 類庫。它后來被重新命名為 Unicode 國際組件庫。2016 年 5 月,ICU 項目以技術委員會 ICU-TC 的身份加入了 Unicode 聯盟,而庫源現在根據 Unicode 許可證分發。

主要功能

ICU 不斷更新以支持最新的 Unicode 標準和區域數據。例如,ICU 73.2 針對 GB18030-2022 合規性支持進行了改進,ICU 74 更新到 Unicode 15.1,包括新字符、表情符號、安全機制以及相應的 API 和實現。ICU 項目計劃于 2024 年 4 月發布的未來 ICU 75 將需要 C++17 或 C11,具體取決于所使用的語言。ICU 歷史上使用 UTF-16,并且僅在 Java 中仍然使用;而對于 C/C++,則支持 UTF-8,包括正確處理“非法 UTF-8”。

MessageFormat

ICU 的一部分是 MessageFormat 類,這是一個格式化系統,允許任意數量的參數控制復數形式(復數、選擇序數)或更通用的開關-case 樣式選擇(選擇),例如語法性別。這些語句可以嵌套。ICU MessageFormat 是通過將復數和選擇系統添加到 Java SE 中的同名系統來創建的。

備選方案

使用 Boost.Locale 來替代與 C++ 一起使用 ICU,或直接使用 ICU,Boost.Locale 是 ICU 的 C++ 包裝器(同時還允許其他后端)。聲稱使用它而不是直接使用 ICU 是因為“對 C++ 開發人員絕對不友好。它忽略了流行的 C++ 慣用法(STL、RTTI、異常等),而是主要模仿 Java API。”另一個聲稱,即 ICU 僅支持 UTF-16(因此是避免使用 ICU 的一個原因),現在不再成立,因為 ICU 現在還為 C 和 C++ 支持 UTF-8。

參考資料 >

生活家百科家居網