Unicode: Unterschied zwischen den Versionen

Aus FI-Wiki
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 3: Zeile 3:


== Codepoints ==
== Codepoints ==
Jedes Zeichen erhält einen eindeutigen Wert (Codepoint) in der Form:
Unicode ordnet jedem Zeichen einen eindeutigen Zahlenwert zu. Dieser Wert wird als '''Codepoint''' bezeichnet.
''U+xxxx''
 
Beispiel:
Codepoints werden üblicherweise in hexadezimaler Schreibweise mit dem Präfix '''U+''' angegeben.
 
Beispiele:
* A → U+0041
* A → U+0041
* ä → U+00E4
* € → U+20AC
* € → U+20AC
* 😊 → U+1F60A
* 😊 → U+1F60A
Der Codepoint legt fest, '''welche Nummer ein Zeichen besitzt'''. Er legt jedoch noch nicht fest, '''wie diese Nummer im Speicher abgelegt wird'''.
Dafür werden Unicode-Kodierungen wie '''UTF-8, UTF-16 oder UTF-32''' verwendet.
Beispiel für den Buchstaben '''A''':
* Unicode-Codepoint: U+0041
* UTF-8: 1 Byte
* UTF-16: 2 Byte
* UTF-32: 4 Byte
Unicode definiert Codepoints im Bereich von '''U+0000 bis U+10FFFF''' und kann damit über eine Million verschiedene Codepoints adressieren.


== UTF-8 ==
== UTF-8 ==
Zeile 32: Zeile 47:


== UTF-16 und UTF-32 ==
== UTF-16 und UTF-32 ==
Neben UTF-8 gibt es weitere Möglichkeiten, Unicode-Zeichen in Bytes zu kodieren.
=== UTF-16 ===
'''UTF-16''' verwendet je nach Zeichen '''2 oder 4 Byte'''.
* häufige Zeichen benötigen 2 Byte
* Zeichen außerhalb der sogenannten Basic Multilingual Plane (BMP) benötigen 4 Byte
* wird unter anderem intern in Java und in Teilen von Windows verwendet
* für viele nicht-lateinische Schriften teilweise platzsparender als UTF-8
'''Vorteile:'''
* viele Unicode-Zeichen benötigen nur 2 Byte
* weit verbreitet in bestehenden Softwaresystemen
'''Nachteile:'''
* variable Länge von 2 oder 4 Byte
* nicht ASCII-kompatibel
* für Texte mit vielen ASCII-Zeichen meist größer als UTF-8
=== UTF-32 ===
'''UTF-32''' verwendet für jeden Unicode-Codepoint immer '''4 Byte'''.
* feste Länge von 4 Byte
* dadurch einfache Verarbeitung und Berechnung von Zeichenpositionen
* wird vor allem intern in bestimmten Programmen und Bibliotheken verwendet
'''Vorteile:'''
* feste Länge erleichtert die Verarbeitung
* direkter Zugriff auf einzelne Codepoints
'''Nachteile:'''
* hoher Speicherbedarf
* für normale Textdateien und Webseiten ineffizient
* deutlich weniger verbreitet als UTF-8 und UTF-16
{| class="wikitable" style="text-align:center; width:100%;"
{| class="wikitable" style="text-align:center; width:100%;"
! Kodierung !! Beschreibung
! Kodierung !! Byte pro Codepoint !! Vorteil !! Nachteil
|-
| UTF-8 || 1–4 Byte || platzsparend, ASCII-kompatibel || variable Länge
|-
|-
| UTF-16 || 2 oder 4 Byte pro Zeichen; häufig in Windows/Java
| UTF-16 || 2 oder 4 Byte || viele Zeichen mit 2 Byte || nicht ASCII-kompatibel
|-
|-
| UTF-32 || 4 Byte pro Zeichen; einfacher, aber weniger platzsparend
| UTF-32 || 4 Byte || einfache Verarbeitung || hoher Speicherbedarf
|}
|}



Aktuelle Version vom 31. August 2026, 12:36 Uhr

Unicode ist ein internationaler Standard zur Darstellung von Schriftzeichen aus nahezu allen Sprachen der Welt. Er ordnet jedem Zeichen einen eindeutigen Codepunkt zu, unabhängig von Sprache, Schrift oder Plattform.

Codepoints

Unicode ordnet jedem Zeichen einen eindeutigen Zahlenwert zu. Dieser Wert wird als Codepoint bezeichnet.

Codepoints werden üblicherweise in hexadezimaler Schreibweise mit dem Präfix U+ angegeben.

Beispiele:

  • A → U+0041
  • ä → U+00E4
  • € → U+20AC
  • 😊 → U+1F60A

Der Codepoint legt fest, welche Nummer ein Zeichen besitzt. Er legt jedoch noch nicht fest, wie diese Nummer im Speicher abgelegt wird.

Dafür werden Unicode-Kodierungen wie UTF-8, UTF-16 oder UTF-32 verwendet.

Beispiel für den Buchstaben A:

  • Unicode-Codepoint: U+0041
  • UTF-8: 1 Byte
  • UTF-16: 2 Byte
  • UTF-32: 4 Byte

Unicode definiert Codepoints im Bereich von U+0000 bis U+10FFFF und kann damit über eine Million verschiedene Codepoints adressieren.

UTF-8

UTF-8 ist die heute wichtigste Unicode-Kodierung.

Eigenschaften:

  • variable Länge: 1 bis 4 Byte pro Zeichen
  • ASCII-kompatibel (0–127 bleiben gleich)
  • platzsparend für westliche Sprachen
  • weltweiter Standard für Web, Dateien, Protokolle
Unicode-Codepunkt-Bereich Byte-Länge in UTF-8 Beispiel
U+0000 – U+007F 1 Byte A → U+0041
U+0080 – U+07FF 2 Byte ä → U+00E4
U+0800 – U+FFFF 3 Byte € → U+20AC
U+10000 – U+10FFFF 4 Byte 😊 → U+1F60A

UTF-16 und UTF-32

Neben UTF-8 gibt es weitere Möglichkeiten, Unicode-Zeichen in Bytes zu kodieren.

UTF-16

UTF-16 verwendet je nach Zeichen 2 oder 4 Byte.

  • häufige Zeichen benötigen 2 Byte
  • Zeichen außerhalb der sogenannten Basic Multilingual Plane (BMP) benötigen 4 Byte
  • wird unter anderem intern in Java und in Teilen von Windows verwendet
  • für viele nicht-lateinische Schriften teilweise platzsparender als UTF-8

Vorteile:

  • viele Unicode-Zeichen benötigen nur 2 Byte
  • weit verbreitet in bestehenden Softwaresystemen

Nachteile:

  • variable Länge von 2 oder 4 Byte
  • nicht ASCII-kompatibel
  • für Texte mit vielen ASCII-Zeichen meist größer als UTF-8

UTF-32

UTF-32 verwendet für jeden Unicode-Codepoint immer 4 Byte.

  • feste Länge von 4 Byte
  • dadurch einfache Verarbeitung und Berechnung von Zeichenpositionen
  • wird vor allem intern in bestimmten Programmen und Bibliotheken verwendet

Vorteile:

  • feste Länge erleichtert die Verarbeitung
  • direkter Zugriff auf einzelne Codepoints

Nachteile:

  • hoher Speicherbedarf
  • für normale Textdateien und Webseiten ineffizient
  • deutlich weniger verbreitet als UTF-8 und UTF-16
Kodierung Byte pro Codepoint Vorteil Nachteil
UTF-8 1–4 Byte platzsparend, ASCII-kompatibel variable Länge
UTF-16 2 oder 4 Byte viele Zeichen mit 2 Byte nicht ASCII-kompatibel
UTF-32 4 Byte einfache Verarbeitung hoher Speicherbedarf

Vorteile von Unicode

  • unterstützt alle Sprachen (Deutsch, Arabisch, Chinesisch, Emojis usw.)
  • einheitlicher Standard weltweit
  • löst Probleme älterer Systeme (ASCII, ISO-8859-1)

Kurzmerksatz

Unicode weist jedem Zeichen weltweit einen eindeutigen Codepunkt zu und UTF-8 speichert ihn effizient in Bytes.