www.wikidata.de-de.nina.az
UTF 16 englisch fur Universal Multiple Octet Coded Character Set UCS Transformation Format for 16 Planes of Group 00 ist eine Kodierung mit variabler Lange fur Unicode Zeichen UTF 16 ist optimiert fur die haufig gebrauchten Zeichen aus der Basic multilingual plane BMP Es ist das alteste der Unicode Kodierungsformate Inhaltsverzeichnis 1 Allgemeines 2 Eigenschaften 3 Normung 4 Kodierung 4 1 Zeichen auf der BMP 4 2 Zeichen ausserhalb der BMP 5 Byte Order 6 Beispiele 7 Beispiel Berechnung der Surrogates 8 Siehe auch 9 EinzelnachweiseAllgemeines BearbeitenBei der UTF 16 Kodierung wird jedem Unicode Codepunkt eine speziell kodierte Kette von ein oder zwei 16 Bit Einheiten zugeordnet d h von zwei oder vier Bytes so dass sich wie auch bei den anderen UTF Formaten alle Unicode Zeichen abbilden lassen Wahrend UTF 8 eine zentrale Bedeutung in Internet Protokollen hat wird UTF 16 vielerorts zur internen Reprasentation von Zeichenketten verwendet z B in aktuellen Versionen von Net Framework Java und Tcl Eigenschaften BearbeitenAufgrund der Kodierung aller Zeichen der BMP in zwei Bytes hat die UTF 16 Kodierung bei Texten welche hauptsachlich aus lateinischen Buchstaben bestehen den doppelten Platzbedarf im Vergleich zu geeigneten ISO 8859 Kodierungen oder zu UTF 8 Werden jedoch viele BMP Zeichen jenseits des Codepoints U 007F codiert so benotigt UTF 16 vergleichbar viel oder weniger Platz als UTF 8 Im Gegensatz zu UTF 8 besteht keine Kodierungsreserve Wird ein UTF 16 kodierter Text als ISO 8859 1 interpretiert so sind zwar samtliche auch in letzterer Kodierung enthaltenen Buchstaben erkennbar aber durch Null Bytes getrennt bei anderen ISO 8859 Kodierungen ist die Kompatibilitat schlechter Normung BearbeitenUTF 16 wird sowohl vom Unicode Konsortium als auch von ISO IEC 10646 definiert Unicode definiert dabei zusatzliche Semantik Ein genauer Vergleich findet sich im Anhang C des Unicode 4 0 Standards 1 Die ISO Norm definierte weiterhin eine Kodierung UCS 2 in der jedoch nur 16 Bit Darstellungen der BMP zulassig sind Kodierung BearbeitenZeichen auf der BMP Bearbeiten Die gultigen Zeichen der BMP U 0000 bis U D7FF und U E000 bis U FFFF werden jeweils direkt auf ein einziges 16 Bit Wort bzw auf zwei Bytes abgebildet Zeichen ausserhalb der BMP Bearbeiten nbsp Bildung interne Zusammensetzung der zwei Teilblocke U ist nicht der ursprungliche Code U sondern der Code nach Differenz bildung U U 10000hexUnicode Zeichen ausserhalb der BMP d h U 10000 bis U 10FFFF werden jeweils durch zwei zusammengehorige 16 Bit Worter engl code units also insgesamt vier Bytes dargestellt Das sind zwar 32 Bits aber die Kodierung ist nicht UTF 32 Um ein solches Zeichen in UTF 16 zu kodieren wird zunachst von der Codenummer des Zeichens hier U genannt die Zahl 65536 10000hex Grosse der BMP abgezogen wodurch eine 20 Bit Zahl U im Bereich von 00000hex bis FFFFFhex entsteht Diese wird anschliessend in zwei Blocke zu je 10 Bit aufgeteilt dem ersten Block d h den 10 hoherwertigen Bits des Codes U wird die Bitfolge 110110 vorangestellt das entstandene 16 Bit Wort aus zwei Byte bezeichnet man als High Surrogate dem zweiten Block d h den 10 niederwertigen Bits des Codes U wird die Bitfolge 110111 vorangestellt das entstandene 16 Bit Wort aus zwei Byte bezeichnet man als Low Surrogate Folgende Codebereiche sind speziell fur solche Surrogate d h UTF 16 Ersatzzeichen reserviert und enthalten daher keine eigenstandigen Zeichen von U D800 bis U DBFF 210 1024 High Surrogates von U DC00 bis U DFFF 210 1024 Low Surrogates Bei der Umwandlung von UTF 16 kodierten Zeichenketten in UTF 8 Bytefolgen ist zu beachten dass Paare aus High und Low Surrogates zuerst wieder zu jeweils einem Unicode Zeichencode zusammengefasst werden mussen bevor dieser dann in eine UTF 8 Bytefolge umgewandelt werden kann Beispiel in der Beschreibung zu UTF 8 Da dies oft nicht beachtet wird hat sich eine andere inkompatible Kodierung fur die Ersatzzeichen etabliert die im Nachhinein als CESU 8 normiert worden ist Byte Order BearbeitenJe nachdem welches der beiden Bytes eines 16 Bit Wortes zuerst ubertragen bzw gespeichert wird spricht man von Big Endian UTF 16BE oder von Little Endian UTF 16LE Unabhangig davon kommt das High Surrogate Wort immer vor dem Low Surrogate Wort Fur ASCII Zeichen die nach UTF 16 ubersetzt werden bedeutet dies dass das hinzugefugte 0 Zeichen im hochstwertigen Bit bei Big Endian vorangestellt und bei Little Endian nachgestellt wird Bei unzureichend spezifizierten Protokollen wird empfohlen das Unicode Zeichen U FEFF BOM byte order mark das fur ein Leerzeichen mit Breite Null und ohne Zeilenumbruch zero width no break space steht an den Anfang des Datenstroms zu setzen wird es als das ungultige Unicode Zeichen U FFFE not a character interpretiert so heisst das dass die Byte Reihenfolge zwischen Sender und Empfanger verschieden ist und die Bytes jedes 16 Bit Worts beim Empfanger vertauscht werden mussen um den anschliessenden Datenstrom korrekt auszuwerten Beispiele BearbeitenIn folgender Tabelle sind einige Kodierungsbeispiele fur UTF 16 angegeben Beispiele fur UTF 16 Kodierungen Zeichen Codepunkt Codepunkt binar UTF 16BE binar UTF 16BE hexadezimalBuchstabe y U 0079 00000000 01111001 00000000 01111001 00 79Buchstabe a U 00E4 00000000 11100100 00000000 11100100 00 E4Eurozeichen U 20AC 00100000 10101100 00100000 10101100 20 ACViolinschlussel U 1D11E 0000000 1 110100 01 00011110 11011000 0 0 110100 11011101 00011110 D8 34 DD 1ECJK Ideogramm 𤽜 U 24F5C 000000 10 010011 11 01011100 11011000 01 010011 11011111 01011100 D8 53 DF 5CDie letzten beiden Beispiele liegen ausserhalb der BMP Da derzeit viele Schriftarten diese neuen Unicode Bereiche noch nicht enthalten konnen die dort enthaltenen Zeichen auf vielen Plattformen nicht korrekt dargestellt werden Stattdessen wird ein Ersatzzeichen dargestellt welches als Platzhalter dient In den Beispielen wird durch die Subtraktion von 10000hex lediglich ein bzw zwei Bits verandert Im Beispiel in der Farbe Magenta angezeigt und aus den so entstandenen Bits die Surrogates gebildet Beispiel Berechnung der Surrogates BearbeitenAlle Zahlen werden im Folgenden zur Basis 16 angegeben Fur die Unicode Position v SG Word1 v 10000 400 displaystyle tfrac v 10000 400 nbsp D800 SG Word2 v mod 400 displaystyle v bmod 400 nbsp DC00 v displaystyle v nbsp 64321 SG Word1 64321 10000 400 displaystyle tfrac 64321 10000 400 nbsp D800 D950 SG Word2 64321 mod 400 displaystyle 64321 bmod 400 nbsp DC00 DF21Siehe auch BearbeitenUTF 32Einzelnachweise Bearbeiten Unicode 4 0 Anhang C PDF 155 kB Abgerufen von https de wikipedia org w index php title UTF 16 amp oldid 237200978