Internationale Komponenten für Unicode

Internationale Komponenten für Unicode
Entwickler (en) Unicode -Konsortium
Erstveröffentlichung 1999
Stabile Version
71.1 / 7 April 2022; vor 3 Monaten
Repository
Geschrieben in C/C ++ (C ++ 20) und Java
Betriebssystem Plattformübergreifend
Typ Bibliotheken zum Unicode und Internationalisierung
Lizenz Unicode -Lizenz
Webseite ICU.unicode.org

Internationale Komponenten für Unicode (ICU) ist ein Open Source Projekt des Reifes C/C ++ und Java Bibliotheken für Unicode Support, Software Internationalisierung, und Software -Globalisierung. Die Intensivstation ist für viele Betriebssysteme und Umgebungen weit verbreitet. Es bietet Anwendungen die gleichen Ergebnisse auf allen Plattformen und zwischen C, C ++ und Java -Software. Das Intensivprojekt ist ein technischer Ausschuss der Unicode -Konsortium und gesponsert, unterstützt und verwendet von IBM und viele andere Unternehmen.[1]

Die Intensivstation bietet folgende Dienste: Unicode Texthandhabung, vollständige Charaktereigenschaften und Zeichensatz Umbauten; Unicode Reguläre Ausdrücke; vollständige Unicode -Sets; Charakter-, Wort- und Liniengrenzen; Sprachempfindlich Kollation und Suche; Normalisierung, Ober- und Kleinbuchstableer und Skript Übersetzungen; umfassend Gebietsschema Daten- und Ressourcenbündelarchitektur über die Gemeinsames Gebietsschema -Datenrepository (CLDR); mehrere Kalender und Zeitzonen; und regelbasierte Formatierung und Parsen von Daten, Zeiten, Zahlen, Währungen und Nachrichten. ICU zur Verfügung gestellt Komplexes Textlayout Service für Arabisch, Hebräisch, Indic und Thai historisch gesehen, aber das wurde in Version 54 veraltet und wurde in Version 58 zugunsten von Version 58 entfernt Harfbuzz.[2]

Die ICU bietet umfangreichere Internationalisierungseinrichtungen als die Standardbibliotheken für C und C ++. Unicode 14.0 wird unterstützt. ICU 67 unterstützt Unicode 13.0 und Handles Entfernung Großbritanniens aus der EU. ICU 64 unterstützt Unicode 12.0, während die Intensivstation 64.2 Unterstützung für Unicode 12.1 hinzufügte, d. H. Das einzelne neue Symbol für das aktuelle Japanisch Reiwa ERA (aber die Unterstützung dafür wurde auch auf ältere Intensivversionen bis auf die Intensivstation 4.8.2 zurückgeschrieben). Die Intensivstation 58 (mit Unicode 9.0 -Unterstützung) ist die letzte Version, die ältere Plattformen unterstützt wie z. Windows XP und Windows Vista. Unterstützung für AIX, Solaris und Z/OS Kann auch in späteren Versionen begrenzt sein (d. H. Das Gebäude hängt von der Compiler -Unterstützung ab).[3] Die Intensivstation wurde als Standardkomponente mit aufgenommen Microsoft Windows seit Windows 10 Version 1703.[4]

Die Intensivstation hat historisch verwendet UTF-16und tut immer noch nur für Java; während für c/c ++ UTF-8 wird unterstützt,[5][6] einschließlich der korrekten Behandlung von "illegalem UTF-8".[7]

ICO 70 aktualisiert auf Unicode 14 und fügte Unterstützung für hinzu Emoji Eigenschaften von Strings und C ++ 20 Compiler.

Intensivstation 71 fügt z.B. Phrase-basierte Linienbrechung für Japaner (frühere Methoden funktionierten nicht gut für kurze japanische Text, wie in Titeln und Überschriften) und Unterstützung für Hindi, die in lateinischen Buchstaben (Hi_Latn) geschrieben wurden, auch als "als" als "als" als "bezeichnet als" bezeichnet. "Hinglish"und aktualisiert die Zeitzonendatenversion 2022A.

Herkunft und Entwicklung

Nach Taligent wurde Teil von IBM Anfang 1996, Sun Microsystems entschied, dass die neue Java -Sprache besser unterstützt werden sollte. Da Taligent Erfahrung mit solchen Technologien hatte und geografisch eng war, wurden ihr Text und ihre internationale Gruppe gebeten, die internationalen Klassen zum Beitrag zu leisten Java Entwickler-Kit Im Rahmen des JDK 1.1 Internationalisierung Apis.[8] Ein großer Teil dieses Code besteht immer noch in der java.text und Java.util Pakete. Weitere Internationalisierungsmerkmale wurden mit jeder späteren Veröffentlichung von Java hinzugefügt.

Die Java -Internationalisierungsklassen wurden dann auf C ++ und C portiert[9] als Teil einer Bibliothek, die als ICU4C bekannt ist ("ICU für C"). Das ICU -Projekt bietet auch die Intensivstation ("ICU for Java"), die Funktionen hinzufügt, die in den Standard -Java -Bibliotheken nicht vorhanden sind. ICU4C und ICU4J sind sehr ähnlich, aber nicht identisch; Beispielsweise enthält ICU4C eine reguläre API aus Expression, während ICU4J nicht. Beide Frameworks wurden im Laufe der Zeit erweitert, um neue Einrichtungen und neue Funktionen von Unicode und zu unterstützen Gemeinsames Gebietsschema -Datenrepository (CLDR).

Die ICU wurde 1999 als Open-Source-Projekt unter dem Namen IBM-Klassen für Unicode veröffentlicht. Es wurde später in internationale Komponenten für Unicode umbenannt.[10] Im Mai 2016 trat das Intensivprojekt dem Unicode -Konsortium als technischer Ausschuss bei ICU-TCund die Bibliotheksquellen werden jetzt unter der Unicode -Lizenz verteilt.[11]

MessageFormat

Ein Teil der Intensivstation ist der MessageFormat Klasse, ein Formatierungssystem, das eine beliebige Anzahl von Argumenten ermöglicht, um die Pluralform zu steuern (plural, selectordinal) oder allgemeiner Schaltergehäuse-Stilauswahl (select) für Dinge wie grammatikalisches Geschlecht. Diese Aussagen können verschachtelt werden.[12] Die ICU MessageFormat wurde erstellt, indem das Plural- und Auswahlsystem zu einem identisch benannten System in in der Lage ist Java se.

Alternativen

Eine Alternative zur Verwendung der Intensivstation mit C ++oder um es direkt zu verwenden, ist die Verwendung von Boost.locale, einem C ++ - Wrapper für die Intensivstation (gleichzeitig andere Backends zulässt[13]). Die Behauptung, es eher direkt als ICU zu verwenden, ist, dass "C ++ - Entwickler absolut unfreundlich sind. Es ignoriert beliebte C ++ - Idiome (STL, RTTI, Ausnahmen usw.), stattdessen die Java -API nachzuahmen."[14][15] Eine andere Behauptung, dass die ICU UTF-16 nur unterstützt (und somit ein Grund, die Verwendung von ICUs zu vermeiden), gilt nicht mehr, wenn die ICU jetzt auch UTF-8 für C und C ++ unterstützt.[5]

Siehe auch

Verweise

  1. ^ "ICU - Internationale Komponenten für Unicode". Site.icu-project.org.
  2. ^ "Layout Engine - ICU -Benutzerhandbuch". useguide.icu-project.org.
  3. ^ "Download ICU 64 - ICU - Internationale Komponenten für Unicode". Site.icu-project.org. Abgerufen 2019-10-20.
  4. ^ Chen, Raymond (27. Mai 2021). "Wie kann ich zwischen IANA-Zeitzonen und zeitbasierten Zeitzonen von Windows konvertieren?". Das alte neue Ding. Microsoft.
  5. ^ a b "UTF-8". ICU -Dokumentation. Abgerufen 2022-05-24.
  6. ^ "UTF -8 - ICU -Benutzerhandbuch". useguide.icu-project.org. Abgerufen 2018-04-03.
  7. ^ "#13311 (Änderung des illegalen UTF-8-Handlings zu Unicode" Best Practice ")". Bugs.icu-project.org. Abgerufen 2018-04-03.
  8. ^ Laura Werner (1999). "Java bereit für die Welt vorbereitet: eine kurze Geschichte der IBM- und Sun -Internationalisierungsbemühungen".
  9. ^ "ICU -Benutzerhandbuch". useguide.icu-project.org.
  10. ^ "ICU Project Management Committee".
  11. ^ "ICU verbindet das Unicode -Konsortium". Unicode, Inc. 2016-05-16. Abgerufen 2016-08-01.
  12. ^ "Formatieren von Nachrichten". ICU -Benutzerhandbuch.
  13. ^ "Boost.locale: Verwenden von Lokalisierungs -Backends". www.boost.org. Abgerufen 2022-05-24.
  14. ^ "Boost.locale: Design Begründung". www.boost.org. Abgerufen 2022-05-24.
  15. ^ "ICU VS Boost -Gebietsschema in C ++". Paketüberfluss. Abgerufen 2022-05-24.

Externe Links