UTF-16


Unicode Transformation Format-16
UCS Transformation Format


Als UTF-16 wird ein Codierungsformat für Unicode bezeichnet, das urspünglich immer zwei Byte zur Darstellung eines Unicode-Zeichens verwendete. Sie ist damit gut für die Verarbeitung innerhalb von Programme geeignet, da sich Zeichen gleicher Breite besser handhaben lassen und zwei Byte pro Zeichen noch eine vertretbaren Speicherverbrauch ergeben. Daher wird sie zum Beispiel von Java als Standardformat für die Zeichendarstellung verwendet. UTF-16 war die erste und am Anfang einzige Unicodecodierung, die entwickelt wurde. In vielen älteren Publikationen ist die Bezeichnung Unicode daher gleichbedeutend mit UTF-16 oder UCS-2.

Allerdings reichte auch der Wertevorrate von UTF-16 bald nicht mehr aus. Das hatte mehrere Gründe. Zum einen wollte man immer mehr Zeichen aus toten Sprachen darstellen können, zum anderen machte die Volksrepublik China mit dem Standard GB18030 eine alternative Codezuweisung für chinesische Schriftzeichen notwendig, die sich nicht auch noch unterbringen lies. Daher mussten größere Formate wie UTF-32 entwicklet werden. Außerdem kam mit UTF-8 ein Format hinzu, das eine variable Anzahl von Darstellungsbytes benutzt.

Um die ganze Sache noch komplizierter zu machen, wurde dann in Unicode Version 4.0 für UTF-16 auch noch die Möglichkeit geschaffen, Unicode-Zeichen im Bereich U+10000 bis U+10FFFF darzustellen. Für diese Zeichen werden zwei Zweibytewörter benutzt, die wie folgt gebildet werden: Von der Nummer des Zeichens wird 65536 (10000hex) abgezogen, da so mehr Zeichen codiert werden können. Danach wird das Ergebnis auf zwei Blöcke zu je 10 Bit aufgeteilt. Dem ersten Block wird die Bitfolge 110110 und dem zweiten Block wird die Bitfolge 110111 vorangestellt. Das erste der so entstandenen Zweibytewörter bezeichnet man als High-Surrogate, das zweite als Low-Surrogate. Das High-Surrogate enthält die höherwertigen, das Low-Surrogate die niederwertigen Bits des Unicode-Zeichens. Der Codebereich von U+D800 bis U+DBFF (High-Surrogates) und der Bereich von U+DC00 bis U+DFFF (Low-Surrogates) ist für diese UTF-16-Ersatzzeichen reserviert und enthält keine eigenständigen Zeichen.

Da diese Codierungserweiterung für alle lebenden Sprachen und Sonderzeichen nicht benötigt wird, sind die ISO mit UCS-2 und auch die meisten Implementierungen des Standards beim der festen 16-Bit-Darstellung geblieben. Dadurch sind aber zwei Varianten für die Umwandlung von UTF-16 nach UTF-8 entstanden. Die korrekte Umwandlung nach Unicode 4.0 sieht vor, dass die mit Hilfe der Ersatzzeichen codierten Werte erst in einen Unicodewert zurückverwandelt und dann in UTF-8 umgewandelt werden. Da aber prkatisch alle älteren UTF-16-Implementierungen von festen Zweibytezeichen ausgehen, wandeln sie die Ersatzwerte einzeln um. Diese Variante hat man nachträglich als CESU-8 standardisiert.

0-9|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|alle

Suche im Lexikon nach im

 

Fachartikel

So wappnen Sie Ihr Netzwerk für das Internet der Dinge [26.11.2014]

Dem Internet der Dinge wird nachgesagt, eine neue Zeitrechnung eingeleitet zu haben. Jedoch wird die immer weitergehende Vernetzung auf dem Rücken von Netzwerken ausgetragen, die letztlich der Verwaltung von Menschen unterliegen. Genauer gesagt der von Netzwerk-Administratoren. Deren Arbeitsalltag erfährt momentan starke Veränderungen, es gilt, immer mehr und komplexere Aufgaben zu bewältigen. Unser Artikel erklärt, wo die Stolperfallen beim Umbau der Netzwerkinfrastruktur liegen und was bei immer mehr vernetzten Geräten zu beachten ist. [mehr]

Grundlagen

Cluster [21.11.2014]

Als Cluster bezeichnen wir im Folgenden einen Verbund von vernetzten Rechnern, die nach außen hin als ein einziger Rechner erscheinen. Die in einem Cluster befindlichen Computer werden auch Knoten (Nodes) genannt. Eine alternative Bezeichnung für die Summe dieser Knoten lautet Serverfarm. Eine derartige Zusammenschaltung von Rechnern verfolgt in der Regel eines der folgenden drei Ziele: Hochverfügbarkeit (HA), High Performance Computing (HPC) oder Load Balancing (LB), wobei die Grenzen zwischen den beiden letztgenannten Varianten eher fließend sind. [mehr]