跳至內容

國際統一碼部件

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

國際統一碼部件(英語: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 XPWindows Vista )的最後一個版本。對AIXSolarisz/OS的支援在更高版本中也可能受到限制(即構建取決於編譯器支援)。 [4]Windows 10版本 1703 起,ICU 已作為標準組件包含在Microsoft Windows[5]

ICU 過去一直使用UTF-16 ,但只有用於 Java;而 C/C++ 使用 UTF-8 [6],包括正確處理「非法 UTF-8」。 [7]

起源與發展

[編輯]

1996 年初,Taligent 併入 IBM 後,太陽電腦決定新的 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 中的類別,它是一個格式化系統,允許使用任意數量的參數來控制複數形式( pluralselectordinal ),或使用更一般的選擇-切換樣式(select)來處理如的語法。這些陳述式可以巢狀。 [12] ICU MessageFormat 是通過將複數和選擇系統添加到Java SE中的同名系統而建立的。

另見

[編輯]

參考

[編輯]
  1. ^ Unicode Terminology: English - Traditional Chinese. www.unicode.org. [2021-11-17]. (原始內容存檔於2021-10-10). 
  2. ^ ICU - International Components for Unicode. site.icu-project.org. [2021-11-17]. (原始內容存檔於2021-08-27). 
  3. ^ Layout Engine - ICU User Guide. userguide.icu-project.org. [2021-11-17]. (原始內容存檔於2021-08-28). 
  4. ^ Download ICU 64 - ICU - International Components for Unicode. site.icu-project.org. [2019-10-20]. (原始內容存檔於2021-07-01). 
  5. ^ 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). 
  6. ^ UTF-8 - ICU User Guide. userguide.icu-project.org. [2018-04-03]. (原始內容存檔於2021-04-17). 
  7. ^ #13311 (change illegal-UTF-8 handling to Unicode "best practice"). bugs.icu-project.org. [2018-04-03]. (原始內容存檔於2019-08-04). 
  8. ^ 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). 
  9. ^ ICU User Guide. userguide.icu-project.org. [2021-11-17]. (原始內容存檔於2021-08-28). 
  10. ^ ICU Project Management Committee. [2021-11-17]. (原始內容存檔於2021-08-28). 
  11. ^ ICU joins the Unicode Consortium. Unicode, Inc. 2016-05-16 [2016-08-01]. (原始內容存檔於2021-11-17). 
  12. ^ Formatting Messages. ICU User Guide. [2021-11-17]. (原始內容存檔於2021-08-23). 

外部連結

[編輯]