國際統一碼部件
![本頁使用了標題或全文手工轉換](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此條目可參照英語維基百科相應條目來擴充。 (2023年1月) |
國際統一碼部件(英語: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 XP 、 Windows Vista )的最後一個版本。對AIX 、 Solaris和z/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 中的類別,它是一個格式化系統,允許使用任意數量的參數來控制複數形式( plural
、 selectordinal
),或使用更一般的選擇-切換樣式(select
)來處理如性的語法。這些語句可以巢狀。 [12] ICU MessageFormat 是通過將複數和選擇系統添加到Java SE中的同名系統而建立的。
另見
[編輯]- Gnu GetText
- Graphite
- NetRexx (ICU 許可證)
- OpenType
- Pango
- Uconv
- 單字
參考
[編輯]- ^ Unicode Terminology: English - Traditional Chinese. www.unicode.org. [2021-11-17]. (原始內容存檔於2021-10-10).
- ^ ICU - International Components for Unicode. site.icu-project.org. [2021-11-17]. (原始內容存檔於2021-08-27).
- ^ Layout Engine - ICU User Guide. userguide.icu-project.org. [2021-11-17]. (原始內容存檔於2021-08-28).
- ^ Download ICU 64 - ICU - International Components for Unicode. site.icu-project.org. [2019-10-20]. (原始內容存檔於2021-07-01).
- ^ 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).
- ^ UTF-8 - ICU User Guide. userguide.icu-project.org. [2018-04-03]. (原始內容存檔於2021-04-17).
- ^ #13311 (change illegal-UTF-8 handling to Unicode "best practice"). bugs.icu-project.org. [2018-04-03]. (原始內容存檔於2019-08-04).
- ^ 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).
- ^ ICU User Guide. userguide.icu-project.org. [2021-11-17]. (原始內容存檔於2021-08-28).
- ^ ICU Project Management Committee. [2021-11-17]. (原始內容存檔於2021-08-28).
- ^ ICU joins the Unicode Consortium. Unicode, Inc. 2016-05-16 [2016-08-01]. (原始內容存檔於2021-11-17).
- ^ Formatting Messages. ICU User Guide. [2021-11-17]. (原始內容存檔於2021-08-23).