Zeichensatz / Zeichensätze

Computer und digitale Schaltkreise können nur 0 und 1 speichern und verarbeiten. Deshalb wird jedes Zeichen in einem Bit-Code gespeichert. Der Zeichensatz definiert, welches Zeichen welchem Bit-Code entspricht. Ein Zeichensatz umfasst eine Sammlung von Zeichen zur Darstellung von Zuständen und Werten. Dazu gehören Zahlen, Buchstaben, Umlaute, Satzzeichen, Symbole, Sonderzeichen, Steuerzeichen und Formelzeichen. Es gibt etwa 100 wichtige Zeichen für deren Darstellung 7 Bit (128 Zeichen) ausreichen.

US-ASCII

ASCII, American Standard Code for Information Interchange, ist die Mutter aller Zeichensätze und wurde für einen Fernschreiber 1963 entwickelt. ASCII ist eine 7-Bit-Zeichenkodierung und enthält druckbare Zeichen und Steuerzeichen. ASCII entspricht der US-Variante von ISO 646 und dient als Grundlage für spätere auf mehr Bits basierende Kodierungen für Zeichensätze (ISO-8859 und Unicode).

y x 000 001 010 011 100 101 110 111
0000 NUL 0 DLE 16   32 0 48 @ 64 P 80   96 p 112
0001 SOH 1 DC1 17 ! 33 1 49 A 65 Q 81 a 97 q 113
0010 STX 2 DC2 18 " 34 2 50 B 66 R 82 b 98 r 114
0011 ETX 3 DC3 19 # 35 3 51 C 67 S 83 c 99 s 115
0100 EOT 4 DC4 20 $ 36 4 52 D 68 T 84 d 100 t 116
0101 ENQ 5 NAK 21 % 37 5 53 E 69 U 85 e 101 u 117
0110 ACK 6 SYN 22 & 38 6 54 F 70 V 86 f 102 v 118
0111 BEL 7 ETB 23 ' 39 7 55 G 71 W 87 g 103 w 119
1000 BS 8 CAN 24 ( 40 8 56 H 72 X 88 h 104 x 120
1001 HT 9 EM 25 ) 41 9 57 I 73 Y 89 i 105 y 121
1010 LF 10 SUB 26 * 42 : 58 J 74 Z 90 j 106 z 122
1011 VT 11 ESC 27 + 43 ; 59 K 75 [ 91 k 107 { 123
1100 FF 12 FS 28 , 44 < 60 L 76 \ 92 l 108 | 124
1101 CR 13 QS 29 - 45 = 61 M 77 ] 93 m 109 } 125
1110 SO 14 RS 30 . 46 > 62 N 78 ^ 94 n 110 126
1111 SI 15 US 31 / 47 ? 63 O 79 _ 95 o 111 DEL 127
  Steuerzeichen Schriftzeichen
.   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
0  NUL SOH STX ETX EOT ENQ ACK BEL BS  HT  LF  VT  FF  CR  SO  SI
1  DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM  SUB ESC FS  GS  RS  US
2   SP  !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /
3   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?
4   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
5   P   Q   R   S   T   U   V   W   X   Y   Z   [       ]   ^   _
6   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
7   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~  DEL

Die druckbaren Zeichen von ASCII umfassen das lateinische Alphabet in Groß- und Kleinschreibung, die zehn arabischen Ziffern sowie einige Satzzeichen. Der Zeichenvorrat entspricht weitgehend einer Tastatur oder Schreibmaschine für die englische Sprache. In Computern und anderen elektronischen Geräten, die Text darstellen, wird der Text in der Regel gemäß ASCII oder abwärtskompatibel (ISO 8859-1, Latin-1, Unicode) gespeichert.

Hinweis: Die typische Verarbeitungsbreite sind nicht 7, sondern 8 Bit. Der Grund, warum ASCII nur 7 Bit verwendet, liegt an der ursprünglichen Verwendung für die Datenübertragung. Das 8. Bit wurde als Prüfbit jedem ASCII-Code hinten angestellt. Auf diese Weise hatte man eine einfache Fehlererkennung für die Datenübertragung.

Beispiel: Hallo Welt

Text H a l l o   W e l t
Bitfolge (7 Bit) 100 1000 110 0001 110 1100 110 1100 110 1111 010 0000 101 0111 110 0101 110 1100 111 0100
ASCII-Code (dezimal) 072 097 108 108 111 032 087 101 108 116
ASCII-Code (hex) 48 61 6C 6C 6F 20 57 65 6C 74

Im Laufe der Zeit wurde ASCII erweitert. So wurde ASCII zum Beispiel um Umlaute oder Rahmenzeichen erweitert (256 Zeichen mit 8 Bit). Leider kam es nie zu einer einheitlichen Norm. Deshalb kann es beim Austausch von ASCII-Dateien zu seltsamen Darstellungen der Sonderzeichen im Text kommen.

ISO 8859

Die ISO 8859 umfasst 15 verschiedene 8-Bit Zeichensätze, die ASCII als Grundlage haben und für verschiedene Sprachräume um weitere länderspezifische Zeichen erweitert sind. Dabei stimmen die ersten 128 Zeichen (0 bis 127) mit ASCII überein. Die restlichen 128 Zeichen (128 bis 255) werden jeweils anders belegt.
Die ISO-8859-Normen werden von der ISO/IEC nicht mehr aktiv weiterentwickelt. 256 Zeichen sind einfach zu wenig, um alle international gültigen Zeichen abzubilden. In der Zukunft wird die ISO-8859-Norm durch den Unicode-Standard abgelöst. Dieser findet vor allem in Form der UTF-8-Kodierung immer mehr Verbreitung.

Die Teilnormen von ISO 8859 sind eng miteinander verwandt. Sie unterscheiden sich lediglich durch zusätzliche nicht darstellbare Steuerzeichen an den in ISO 8859 freien Positionen.

Unicode

Unicode ist ein internationaler Standard, der jedes Schriftzeichen oder Textelement aller bekannten Schriftkulturen und Zeichensysteme in einem digitalen Code festlegt. Die Verwendung unterschiedlicher und inkompatibler Kodierungen und Zeichensätze in verschiedenen Ländern und Kulturkreisen soll so beseitigt werden. Ein Ziel ist, einen Zeichensatz für alle Sprachen und alle Zeichen zu haben.
ISO/IEC 10646 ist die bedeutungsgleiche Bezeichnung der ISO für den Unicode-Zeichensatz. Unicode wird von der ISO als Universal Character Set (UCS) bezeichnet.
Jedes Unicode-Zeichen hat einen stabilen Code (z. B. Ux00DF hex), hat einen stabil gültigen Zeichennamen (z. B. LATIN LETTER SHARP S), es existiert eine Demo-Darstellung (z. B. "ß") und hat dokumentierte Zeicheneigenschaften (z. B. letter, lower case).

Unicode wird ständig um weitere Zeichen ergänzt. Dabei durchbricht der Zeichensatz die alte 8-Bit-Grenze von ISO 8859. Aus diesem Grund gibt es Unicode auch mit 16 oder 32 Bit (Nutzung momentan bis 31 Bit). UTF-8 wird nur für die ASCII- und Latin-1-Kompatibilität benötigt. Das bedeutet, die ersten 256 Zeichen entsprechen ISO 8859-1 und darin wiederum die ersten 128 Zeichen dem ASCII.

Damit man die entsprechende Kodierung der Zeichen in einer Textdatei erkennen kann, gibt es sich wiederholende Codemuster bzw. Bitmuster, anhand der man erkennen kann, ob es sich um UTF-8, UTF-16 oder UTF-32-kodierte Zeichen handelt.

Bitmuster Zeichen (hex) Speicher pro Zeichen Anzahl der Zeichen
0xxx xxxx 0 ... 7F 7 Bit (ASCII) 128
110x xxxx 10xx xxxx 80 ... 7FF 2 Byte 2.048
1110 xxxx 10xx xxxx 10xx xxxx 800 ... FFFF 3 Byte 65.536
1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx 10000 ... 10FFFF 4 Byte 2.097.152

Andere Zeichensätze

Bevor Unicode standardisiert wurde, gab es verschiedene weitere Zeichensätze.