<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=UTF-16</id>
	<title>UTF-16 - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=UTF-16"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=UTF-16&amp;action=history"/>
	<updated>2026-05-26T22:35:47Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=UTF-16&amp;diff=91230&amp;oldid=prev</id>
		<title>imported&gt;Trustable: /* Allgemeines */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=UTF-16&amp;diff=91230&amp;oldid=prev"/>
		<updated>2025-10-27T14:55:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Allgemeines&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;UTF-16&amp;#039;&amp;#039;&amp;#039; ({{enS}} für &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;U&amp;#039;&amp;#039;&amp;#039;niversal Multiple-Octet Coded Character Set&amp;amp;nbsp;(UCS) &amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ransformation &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;ormat for &amp;#039;&amp;#039;&amp;#039;16&amp;#039;&amp;#039;&amp;#039;&amp;amp;nbsp;Planes of Group&amp;amp;nbsp;00&amp;#039;&amp;#039;) ist eine [[Zeichenkodierung|Kodierung]] mit [[Multibyte Character Set|variabler Länge]] für [[Unicode]]-Zeichen. UTF-16 ist optimiert für die häufig gebrauchten Zeichen aus der &amp;#039;&amp;#039;[[Unicode#Gliederung|Basic multilingual plane]]&amp;amp;nbsp;(BMP)&amp;#039;&amp;#039;. Es ist das älteste der [[Unicode Transformation Format|Unicode-Kodierungsformate]].&lt;br /&gt;
&lt;br /&gt;
== Allgemeines ==&lt;br /&gt;
Bei der UTF-16-Kodierung wird jedem Unicode-Codepunkt eine speziell kodierte Kette von ein oder zwei 16-[[Bit]]-Einheiten zugeordnet, d.&amp;amp;nbsp;h. von zwei oder vier [[Byte]]s, so dass sich – wie auch bei den anderen [[Unicode Transformation Format|UTF]]-Formaten – alle Unicode-Zeichen abbilden lassen.&lt;br /&gt;
&lt;br /&gt;
Während [[UTF-8]] eine zentrale Bedeutung in [[Internet-Protokoll]]en hat, wird UTF-16 vielerorts zur Repräsentation von [[Zeichenkette]]n verwendet, z.&amp;amp;nbsp;B. in [[.Net-Framework]], [[Java (Programmiersprache)|Java]], [[JavaScript]], [[Tcl]], [[Objective-C]] und der [[Windows-API]].&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
Aufgrund der Kodierung aller Zeichen der [[Basic Multilingual Plane|BMP]] in zwei Bytes hat die UTF-16-Kodierung bei Texten, welche hauptsächlich aus [[lateinische Buchstaben|lateinischen Buchstaben]] bestehen, den doppelten Platzbedarf im Vergleich zu geeigneten [[ISO 8859|ISO-8859]]-Kodierungen oder zu&amp;amp;nbsp;UTF-8. Werden jedoch viele BMP-Zeichen jenseits des [[Codepoint]]s&amp;amp;nbsp;U+007F codiert, so benötigt UTF-16 vergleichbar viel oder weniger Platz als UTF-8.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu UTF-8 besteht keine Kodierungsreserve. Wird ein UTF-16-kodierter Text als [[ISO 8859-1]] interpretiert, so sind zwar sämtliche auch in letzterer Kodierung enthaltenen Buchstaben erkennbar, aber durch Null-Bytes getrennt; bei anderen ISO-8859-Kodierungen ist die [[Kompatibilität (Technik)|Kompatibilität]] schlechter.&lt;br /&gt;
&lt;br /&gt;
== Normung ==&lt;br /&gt;
UTF-16 wird sowohl vom [[Unicode-Konsortium]] als auch von [[ISO/IEC 10646]] definiert. Unicode definiert dabei zusätzliche [[Semantik]]. Ein genauer Vergleich findet sich im Anhang&amp;amp;nbsp;C des Unicode-4.0-Standards.&amp;lt;ref&amp;gt;[http://www.unicode.org/versions/Unicode4.0.0/appC.pdf Unicode 4.0, Anhang C] (PDF; 155&amp;amp;nbsp;kB)&amp;lt;/ref&amp;gt; Die ISO-Norm definierte weiterhin eine Kodierung&amp;amp;nbsp;[[UCS-2]], in der jedoch nur 16-Bit-Darstellungen der&amp;amp;nbsp;BMP zulässig sind.&lt;br /&gt;
&lt;br /&gt;
== Kodierung ==&lt;br /&gt;
=== Zeichen auf der BMP ===&lt;br /&gt;
Die gültigen Zeichen der [[Basic Multilingual Plane|BMP]] (U+0000 bis U+D7FF und U+E000 bis U+FFFF) werden jeweils direkt auf ein einziges 16-Bit-[[Datenwort|Wort]] bzw. auf zwei Bytes abgebildet.&lt;br /&gt;
&lt;br /&gt;
=== Zeichen außerhalb der BMP ===&lt;br /&gt;
[[Datei:Utf-16.svg|mini|hochkant=1.55|Bildung + interne Zusammensetzung der zwei Teilblöcke. U&amp;#039; ist nicht der ursprüngliche Code&amp;amp;nbsp;U, sondern der Code nach Differenz&amp;amp;shy;bildung: U&amp;#039; = U - 10000&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt;]]&lt;br /&gt;
Unicode-Zeichen außerhalb der&amp;amp;nbsp;BMP (d.&amp;amp;nbsp;h. U+10000 bis&amp;amp;nbsp;U+10FFFF) werden jeweils durch zwei zusammengehörige 16-Bit-Wörter (englisch {{lang|en|&amp;#039;&amp;#039;code units&amp;#039;&amp;#039;}}), also insgesamt vier Bytes dargestellt. (Das sind zwar 32 Bits, aber die Kodierung ist nicht [[UTF-32]].)&lt;br /&gt;
&lt;br /&gt;
Um ein solches Zeichen in UTF-16 zu kodieren, wird zunächst von der Codenummer des Zeichens (hier U genannt) die Zahl&amp;amp;nbsp;65536 (10000&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt; = Größe der&amp;amp;nbsp;BMP) abgezogen, wodurch eine 20-Bit-Zahl&amp;amp;nbsp;U&amp;#039; im Bereich von&amp;amp;nbsp;00000&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt; bis&amp;amp;nbsp;FFFFF&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt; entsteht. Diese wird anschließend in zwei Blöcke zu je 10&amp;amp;nbsp;Bit aufgeteilt:&lt;br /&gt;
* dem ersten Block (d.&amp;amp;nbsp;h. den 10 höherwertigen Bits des Codes&amp;amp;nbsp;U&amp;#039;) wird die Bitfolge&amp;amp;nbsp;11011&amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; vorangestellt, das entstandene 16-Bit-Wort aus zwei Byte bezeichnet man als &amp;#039;&amp;#039;High-Surrogate&amp;#039;&amp;#039;&lt;br /&gt;
* dem zweiten Block (d.&amp;amp;nbsp;h. den 10 niederwertigen Bits des Codes&amp;amp;nbsp;U&amp;#039;) wird die Bitfolge&amp;amp;nbsp;11011&amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; vorangestellt, das entstandene 16-Bit-Wort aus zwei Byte bezeichnet man als &amp;#039;&amp;#039;Low-Surrogate&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Folgende Codebereiche sind speziell für solche Surrogate, d.&amp;amp;nbsp;h. UTF-16-Ersatzzeichen, reserviert und enthalten daher &amp;#039;&amp;#039;keine&amp;#039;&amp;#039; eigenständigen Zeichen:&lt;br /&gt;
* von&amp;amp;nbsp;U+D800 bis&amp;amp;nbsp;U+DBFF (2&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&amp;amp;nbsp;=&amp;amp;nbsp;1024&amp;amp;nbsp;High-Surrogates)&lt;br /&gt;
* von&amp;amp;nbsp;U+DC00 bis&amp;amp;nbsp;U+DFFF (2&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt;&amp;amp;nbsp;=&amp;amp;nbsp;1024&amp;amp;nbsp;Low-Surrogates).&lt;br /&gt;
&lt;br /&gt;
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 müssen, 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 für die Ersatzzeichen etabliert, die im Nachhinein als [[CESU-8]] normiert worden ist.&lt;br /&gt;
&lt;br /&gt;
== Byte Order ==&lt;br /&gt;
Je nachdem, welches der beiden Bytes eines 16-Bit-Wortes zuerst übertragen bzw. gespeichert wird, spricht man von &amp;#039;&amp;#039;[[Big Endian]]&amp;#039;&amp;#039;&amp;amp;nbsp;(UTF-16BE) oder von &amp;#039;&amp;#039;[[Little Endian]]&amp;#039;&amp;#039;&amp;amp;nbsp;(UTF-16LE). Unabhängig davon kommt das &amp;#039;&amp;#039;High-Surrogate&amp;#039;&amp;#039;-Wort immer vor dem &amp;#039;&amp;#039;Low-Surrogate&amp;#039;&amp;#039;-Wort.&lt;br /&gt;
&lt;br /&gt;
Für [[ASCII]]-Zeichen, die nach&amp;amp;nbsp;UTF-16 übersetzt werden, bedeutet dies, dass das hinzugefügte 0-Zeichen im höchstwertigen Bit&lt;br /&gt;
* bei &amp;#039;&amp;#039;Big Endian&amp;#039;&amp;#039; vorangestellt und&lt;br /&gt;
* bei &amp;#039;&amp;#039;Little Endian&amp;#039;&amp;#039; nachgestellt wird.&lt;br /&gt;
&lt;br /&gt;
Bei unzureichend spezifizierten Protokollen wird empfohlen, das Unicode-Zeichen U+FEFF ([[Byte Order Mark|BOM]],&amp;amp;nbsp;&amp;#039;&amp;#039;byte order mark&amp;#039;&amp;#039;), das für ein [[Leerzeichen]] mit Breite null und ohne [[Zeilenumbruch]] (&amp;#039;&amp;#039;zero&amp;amp;nbsp;width no-break&amp;amp;nbsp;space&amp;#039;&amp;#039;) steht, an den Anfang des [[Datenstrom]]s zu setzen – wird es als das ungültige Unicode-Zeichen&amp;amp;nbsp;U+FFFE (&amp;#039;&amp;#039;[[Unicodeblock Spezielles|not&amp;amp;nbsp;a&amp;amp;nbsp;character]]&amp;#039;&amp;#039;) interpretiert, so heißt das, dass die [[Byte-Reihenfolge]] zwischen Sender und Empfänger verschieden ist und die Bytes jedes 16-Bit-[[Datenwort|Worts]] beim Empfänger vertauscht werden müssen, um den anschließenden Datenstrom korrekt auszuwerten.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
In folgender Tabelle sind einige Kodierungsbeispiele für UTF-16 angegeben:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Beispiele für UTF-16 Kodierungen&lt;br /&gt;
|-&lt;br /&gt;
! Zeichen&lt;br /&gt;
! Codepunkt&lt;br /&gt;
! Codepunkt binär&lt;br /&gt;
! UTF-16BE [[Dualsystem|binär]]&lt;br /&gt;
! UTF-16BE [[Hexadezimalsystem|hexadezimal]]&lt;br /&gt;
|-&lt;br /&gt;
| Buchstabe &amp;#039;&amp;#039;y&amp;#039;&amp;#039;&lt;br /&gt;
| U+0079&lt;br /&gt;
|style=&amp;quot;text-align:right; font-family:monospace;&amp;quot;| 00000000&amp;amp;nbsp;0&amp;lt;span style=&amp;quot;color:#00CC00&amp;quot;&amp;gt;1111001&amp;lt;/span&amp;gt;&lt;br /&gt;
|style=&amp;quot;font-family:monospace;&amp;quot;| 00000000&amp;amp;nbsp;0&amp;lt;span style=&amp;quot;color:#00CC00&amp;quot;&amp;gt;1111001&amp;lt;/span&amp;gt;&lt;br /&gt;
| 00 79&lt;br /&gt;
|-&lt;br /&gt;
| Buchstabe &amp;#039;&amp;#039;ä&amp;#039;&amp;#039;&lt;br /&gt;
| U+00E4&lt;br /&gt;
|style=&amp;quot;text-align:right; font-family:monospace;&amp;quot;| 00000000&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00CC00&amp;quot;&amp;gt;11100100&amp;lt;/span&amp;gt;&lt;br /&gt;
|style=&amp;quot;font-family:monospace;&amp;quot;| 00000000&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00CC00&amp;quot;&amp;gt;11100100&amp;lt;/span&amp;gt;&lt;br /&gt;
| 00 E4&lt;br /&gt;
|-&lt;br /&gt;
| [[Eurozeichen]] &amp;#039;&amp;#039;€&amp;#039;&amp;#039;&lt;br /&gt;
| U+20AC&lt;br /&gt;
|style=&amp;quot;text-align:right; font-family:monospace;&amp;quot;| &amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;00100000&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00CC00&amp;quot;&amp;gt;10101100&amp;lt;/span&amp;gt;&lt;br /&gt;
|style=&amp;quot;font-family:monospace;&amp;quot;| &amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;00100000&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#00CC00&amp;quot;&amp;gt;10101100&amp;lt;/span&amp;gt;&lt;br /&gt;
| 20 AC&lt;br /&gt;
|-&lt;br /&gt;
| [[Violinschlüssel]] &amp;#039;&amp;#039;&amp;amp;#x1D11E;&amp;#039;&amp;#039;&lt;br /&gt;
| U+1D11E&lt;br /&gt;
|style=&amp;quot;text-align:right; font-family:monospace;&amp;quot;| 0000&amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;000&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#CC00CC&amp;quot;&amp;gt;1&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;110100&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#00CCCC&amp;quot;&amp;gt;01&amp;amp;nbsp;00011110&amp;lt;/span&amp;gt;&lt;br /&gt;
|style=&amp;quot;font-family:monospace;&amp;quot;| &amp;#039;&amp;#039;&amp;#039;110110&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;00&amp;amp;nbsp;0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#CC00CC&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;110100&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;#039;&amp;#039;&amp;#039;110111&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:#00CCCC&amp;quot;&amp;gt;01&amp;amp;nbsp;00011110&amp;lt;/span&amp;gt;&lt;br /&gt;
| D8 34 DD 1E&lt;br /&gt;
|-&lt;br /&gt;
| [[Han-Vereinheitlichung|CJK-Ideogramm]] &amp;amp;#x24F5C;&lt;br /&gt;
| U+24F5C&lt;br /&gt;
|style=&amp;quot;text-align:right; font-family:monospace;&amp;quot;| 0000&amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#CC00CC&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;010011&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#00CCCC&amp;quot;&amp;gt;11&amp;amp;nbsp;01011100&amp;lt;/span&amp;gt;&lt;br /&gt;
|style=&amp;quot;font-family:monospace;&amp;quot;| &amp;#039;&amp;#039;&amp;#039;110110&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;00&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#CC00CC&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#CCCC00&amp;quot;&amp;gt;010011&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;#039;&amp;#039;&amp;#039;110111&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:#00CCCC&amp;quot;&amp;gt;11&amp;amp;nbsp;01011100&amp;lt;/span&amp;gt;&lt;br /&gt;
| D8 53 DF 5C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die letzten beiden Beispiele liegen außerhalb der BMP. Da derzeit viele Schriftarten diese neuen Unicode-Bereiche noch nicht enthalten, können 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 10000&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt; lediglich ein bzw. zwei Bits verändert (im Beispiel in der Farbe Magenta angezeigt) und aus den so entstandenen Bits die Surrogates gebildet.&lt;br /&gt;
&lt;br /&gt;
== Beispiel-Berechnung der Surrogates ==&lt;br /&gt;
Alle Zahlen werden im Folgenden zur Basis 16 angegeben.&lt;br /&gt;
 Für die Unicode-Position v&lt;br /&gt;
&lt;br /&gt;
 SG-Word1 = &amp;lt;math&amp;gt;\tfrac{v-10000}{400}&amp;lt;/math&amp;gt; + D800&lt;br /&gt;
 SG-Word2 = &amp;lt;math&amp;gt;v\;\bmod\;400&amp;lt;/math&amp;gt; + DC00&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;        = 64321&lt;br /&gt;
 SG-Word1 = &amp;lt;math&amp;gt;\tfrac{64321-10000}{400}&amp;lt;/math&amp;gt; + D800&lt;br /&gt;
          = D950&lt;br /&gt;
&lt;br /&gt;
 SG-Word2 = &amp;lt;math&amp;gt;64321\;\bmod\;400&amp;lt;/math&amp;gt; + DC00&lt;br /&gt;
          = DF21&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[UTF-32]]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Utf-16}}&lt;br /&gt;
[[Kategorie:Unicode]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Trustable</name></author>
	</entry>
</feed>