DE  |  FR  |  IT

Zeichencodierung

Zeichensätze und Zeichencodierung

Wir unterscheiden zwischen Zeichensätzen und Zeichencodierungen

  • Ein Zeichensatz ist eine festgelegte Menge von Zeichen (Buchstaben, Zahlen, Sonderzeichen, etc.). Jedes Zeichen (als abstrakte Einheit, z.B. "der lateinische Grossbuchstabe A") wird eindeutig identifiziert durch einem ihm zugeordneten Codewert (Zeichencode).
  • Eine Zeichencodierung ist eine Abbildung von Zeichencodes in eine im digitalen Speicher darstellbare Form. Dabei wird jedem Zeichencode (der jeweils für genau ein abstraktes Zeichen steht) eine Bitsequenz zugeordnet.

Traditionellerweise fielen Zeichensätze und Zeichencodierungen zusammen, indem direkt ein Zeichen in eine Bitsequenz abgebildet wurde. Dies gilt unter anderem für
  • 7-bit ASCII
  • die ISO 8859-Normenfamilie (ISO-8859-1 etc.), in 8 Bits codiert.

Bei Unicode werden Zeichensatz und Zeichencodierung getrennt. Unicode definiert in erster Linie die verschiedenen Zeichen in den verschiedenen Schriften (bisher über 100'000) und ordnet ihnen einen sogenannten code point, einen Zeichencode zu. Dieser Zeichencode kann danach in verschiedener Weise in eine Bitsequenz umgesetzt werden:
  • UTF-32 (UTF steht für Unicode Transformation Format) sieht für jedes Zeichen 4 Bytes à 8 Bits vor. Damit nehmen alle Zeichen im Speicher den gleichen Platz ein und es können alle bestehenden und alle noch je zu definierenden Zeichen untergebracht werden; diese Darstellung ist recht speicherintensiv.
  • UCS-2 (2-byte Universal Character Set) sieht für jedes Zeichen 2 Bytes à 8 Bits vor. Damit nehmen alle Zeichen im Speicher den gleichen Platz ein; es können 65'536 Zeichen dargestellt werden, d.h. nur der sogenannte Basic Multilingual Plane (BMP) von Unicode.
  • UTF-16 löst dieses Problem, indem es die Zeichen des BMP in einem 16-Bit-Wort, die weiteren Unicode-Zeichen in 2 16-Bit-Wörtern darstellt.
  • UTF-8 ist eine speicherplatzoptimierte Zeichencodierung. Dabei werden die 128 Zeichen von ASCII in 1 Byte dargestellt, womit eine Kompatibilität erreicht wird. Für die weiteren Zeichen des Zeichensatzes werden bis zu 4 Bytes verwendet. Aus Gründen der Speicherplatzoptimierung und der Abwärtskompatibilität mit ASCII wird der Gebrauch von UTF-8 empfohlen.

Referenzen

ASCII
American National Standards Institute (ANSI) X3.4-1967 (ASCII-1967)
ISO/IEC 646:1991, Information technology — ISO 7-bit coded character set for information interchange
https://www.iso.org/standard/4777.html
[kostenpflichtig]

ISO 8859
ISO/IEC 8859-1:1998, Information technology — 8-bit single-byte coded graphic character sets — Part 1: Latin alphabet No. 1
https://www.iso.org/standard/28245.html
[kostenpflichtig]
http://std.dkuug.dk/jtc1/sc2/wg3/docs/n411.pdf
[kostenlose Draft-Version]

Unicode
Unicode 13.0.0
http://www.unicode.org/versions/Unicode13.0.0/
UTF-8
http://tools.ietf.org/html/rfc3629

Literatur

Spolsky, Joel: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
http://www.joelonsoftware.com/articles/Unicode.html
Tero, Paul: Unicode, UTF8 & Character Sets: The Ultimate Guide
Smashing Magazine, 2012
https://www.smashingmagazine.com/2012/06/all-about-unicode-utf8-character-sets/

Unicode
UTF-8
http://www.utf-8.com/
Vergleich von UTF-8 mit anderen UNICODE-Zeichencodierungen
http://en.wikipedia.org/wiki/UTF-8#Advantages_and_disadvantages

Katalog archivischer Dateiformate Version 6.2, Dezember 2021