Zeichensätze - Zeichenvorrat und Zeichenkodierung im ASCII

Über Zeichensätze werden in der EDV Speicherbedarf und Zeichenkodierung für einzelne Zeichen festgelegt. Die Anzahl der Bits, die für ein Zeichen verwendet wird, begrenzt die Menge der unterschiedlichen Zeichen und somit den Zeichenvorrat eines Zeichensatzes. Wenn beispielsweise zum Speichern eines Zeichens 7 Bits verwendet werden, dann hat man 128 verschiedene Bitmuster im Bereich von 0000000 bis 1111111. Die unterschiedlichen Bitmuster können den einzelnen Zeichen zugeordnet werden und das zu einem Zeichen gehörende Bitmuster wird Zeichenkodierung genannt.

Ein verbreiteter 7-Bit Zeichensatz ist ASCII. Wenn man in einer Textdatei den Buchstaben A eingibt und die Datei mit der ASCII-Zeichenkodierung speichert, dann wird für das Zeichen A im Speicher das Bitmuster 1000001 abgelegt. Bei der Ausgabe am Bildschirm wird das Bitmuster ebenfalls verwendet. Die Grafikkarte wandelt dabei den Datenstrom um, sodass das Zeichen am Monitor angezeigt wird. Die Schriftart spielt dabei keine Rolle und beeinflusst lediglich die Darstellung des Zeichens.

Zeichenkodierung für A im ASCII
Mit einem Zeichensatz wird die Zeichenkodierung der Zeichen festgelegt

Da Computer international verwendet werden und die EDV-Systeme voneinander abweichend sind, wurde ein standardisiertes Verfahren benötigt, mit dem sichergestellt wird, dass trotz unterschiedlicher EDV-Systeme, Sprachen und Tastatur-Layouts eine Information bei einer Übertragung auf ein anderes System in der ursprünglichen Form erhalten bleibt. Wenn beispielsweise auf einem PC ein Dokument erstellt wurde, dann müssen die einzelnen Zeichen des Dokuments auch so angezeigt werden, wenn das Dokument auf einem Rechner geöffnet wird. Wenn jedes EDV-System die Bitmuster anders interpretieren würde, wäre das Ergebnis bei einer Übertragung nicht mehr leserlich, da es einen Buchstabensalat zur Folge hätte.

Für solche Zwecke wurden standardisierte Zeichensätze entwickelt. Bei einer Übertragung auf ein anderes EDV-System muss man lediglich die zugrunde liegende Zeichenkodierung angeben und der Computer weiß dadurch, für welche Zeichen die einzelnen Bitmuster stehen. Im Laufe der Zeit gab es verschiedene Zeichensätze. Die wichtigsten davon sind die folgenden, wobei es einen ANSI-Zeichensatz im Grunde nicht gibt und womit mehrere Zeichensätze gemeint werden.

  • ASCII (7 Bits)
  • ANSI (8 Bits, ISO-8859-1 bis ISO-8859-16)
  • UTF-8 (variabel von 8 - 32 Bits)

Wenn man die Zeichenkodierung sowie weitere nützliche Codes für ein Zeichen ermitteln oder einen Einblick in die enthaltenen Zeichen der Zeichensätze möchte, kann man das Script auf der Seite Zeichencodes verwenden.

Entwicklung der Zeichensätze

Die Idee, Signalen eine Bedeutung zu geben, ist sehr alt und wurde früher vor allem im militärischen Bereich genutzt. Mit der Entwicklung der elektrischen Telegrafie wurden für die Übertragung der Zeichen elektrische Impulse verwendet. Auf der Empfangsseite mussten die Signale wieder in Zeichen umgewandelt werden. Danach konnte man die Nachricht an eine Person in Textform übermitteln. Damit das Umwandeln zwischen Signalen und Zeichen entfällt, wurden Fernschreiber entwickelt.

Hierfür eigneten sich die unterschiedlich langen Impulse der Telegrafie jedoch nicht und so wurde auf die Kodierung von E. Baudot zurückgegriffen, mit dem ein Zeichen über 5 Binärziffern übertragen wurde. Es war sozusagen ein 5-Bit Zeichensatz und man konnte den Bitmustern 32 verschiedene Zeichen zuordnen. Durch eine Erweiterung mit FIGS und LTRS wurde der Zeichenvorrat auf 53 Zeichen ausgeweitet. Das System wurde in den ersten Computern übernommen, 53 Zeichen waren jedoch nicht ausreichend. Außerdem war das Umschalten zwischen FIGS und LTRS nicht erwünscht und so entstand zunächst ein 6-Bit Zeichensatz.

Da die Rechner als kleinste verarbeitbare Einheit mit 8 Bits umgehen konnten und 64 Zeichen nach wie vor zu wenig waren, wurde 1963 der 7-Bit Zeichensatz ASCII entwickelt, der zu der Zeit jedoch keine Kleinbuchstaben enthielt. 1967 wurde ASCII erweitert und die Kleinbuchstaben kamen hinzu. Das achte Bit wurde als Prüfbit verwendet. Mit 7 Bits konnten die Bitmuster 128 verschiedenen Zeichen zugeordnet werden. Da ASCII zu Fernschreibern kompatibel sein sollte, wurden die ersten 32 Positionen (0 - 31) den Steuerzeichen zugeordnet. Das letzte Bitmuster (127) wurde für das Löschzeichen reserviert und die übrigen Bitmuster wurden verschiedenen Zeichen zugeordnet.

Lange Zeit war ASCII der Standard-Zeichensatz in der EDV. 128 Zeichen waren jedoch nach wie vor nicht genug. Da das Prüfbit nicht mehr benötigt wurde, erweiterte man ASCII. Die Erweiterung wurde so vollzogen, dass das achte Bit für verschiedene Sprachräume unterschiedlich genutzt werden konnte. So entstanden die 15 verschiedenen Zeichensätze ISO-8859-1 bis ISO-8859-16, die sich anhand der Versionsnummer nach ISO-8859 unterscheiden. Sie werden auch ANSI-Zeichensätze genannt, obwohl es einen ANSI-Zeichensatz nicht gibt. ANSI hat an den Entwürfen für die ISO-8859 Zeichensätze mitgewirkt und daher werden diese häufig ANSI genannt. Im westeuropäischen Sprachraum wird ISO-8859-1 oder ISO-8859-15 verwendet. ISO-8859-12 existiert nicht und entfällt somit innerhalb der Reihe.

Diese Zeichensätze waren ausreichend, bis das Internet sich rasend schnell verbreitete. Auf Websites ist es häufig notwendig, Zeichen aus einem anderen Zeichensatz darzustellen, z.B. wenn man auf einer deutschen Website einen ausländischen Namen, Städtenamen, Produktnamen etc. schreiben möchte. Die Lösung hierfür ist UTF (Unicode), die es in verschiedenen Ausprägungen gibt. Mittlerweile wird meistens UTF-8 verwendet, da es sparsam im Speicherverbrauch ist und man trotzdem alle Zeichen damit darstellen kann. Der Speicherverbrauch ist dabei variabel. Für die Zeichen 0 - 127 aus dem ASCII-Zeichensatz wird nur 1 Byte benötigt. Für die Zeichen darüber hinaus 2 oder mehr Bytes. Da das Bitmuster für die deutschen Umlaute nach 127 angeordnet sind, verbrauchen diese in UTF-8 zwei Bytes (in ISO-8859-1 nur 1 Byte).

ASCII-Zeichensatz: American Standard Code for Information Interchange

ASCII steht für American Standard Code for Information Interchange. Es ist ein 7-Bit Zeichensatz, wodurch man 128 verschiedene Bitmuster einzelnen Zeichen zuordnen kann. Die ersten 32 Zeichen sind Steuerzeichen, um die Kompatibilität mit Fernschreibern zu gewährleisten. Das letzte Zeichen ist das Löschzeichen. Auf der folgenden Tabelle können die Zuordnungen der verschiedenen Bitmuster entnommen werden. Die ersten 128 Zeichen von UTF und der ISO-8859-Reihe sind identisch.

ASCII-Zeichensatz mit 7 Bit für die Darstellung von 128 Zeichen
Scancode Dual Hex Dezimal Zeichen Scancode Dual Hex Dezimal Zeichen
0000000 00 0 NUL 1000000 40 64 @
0000001 01 1 SOH ^A 1E 1000001 41 65 A
0000010 02 2 STX ^B 30 1000010 42 66 B
0000011 03 3 ETX ^C 2E 1000011 43 67 C
0000100 04 4 EOT ^D 20 1000100 44 68 D
0000101 05 5 ENQ ^E 12 1000101 45 69 E
0000110 06 6 ACK ^F 21 1000110 46 70 F
0000111 07 7 BEL ^G 22 1000111 47 71 G
0E 0001000 08 8 BS ^H 23 1001000 48 72 H
0F 0001001 09 9 TAB ^I 17 1001001 49 73 I
0001010 0A 10 LF ^J 24 1001010 4A 74 J
0001011 0B 11 VT ^K 25 1001011 4B 75 K
0001100 0C 12 FF ^L 26 1001100 4C 76 L
1C 0001101 0D 13 CR ^M 32 1001101 4D 77 M
0001110 0E 14 SO ^N 31 1001110 4E 78 N
0001111 0F 15 SI ^O 18 1001111 4F 79 O
0010000 10 16 DLE ^P 19 1010000 50 80 P
0010001 11 17 DC1 ^Q 10 1010001 51 81 Q
0010010 12 18 DC2 ^R 13 1010010 52 82 R
0010011 13 19 DC3 ^S 1F 1010011 53 83 S
0010100 14 20 DC4 ^T 14 1010100 54 84 T
0010101 15 21 NAK ^U 16 1010101 55 85 U
0010110 16 22 SYN ^V 2F 1010110 56 86 V
0010111 17 23 ETB ^W 11 1010111 57 87 W
0011000 18 24 CAN ^X 2D 1011000 58 88 X
0011001 19 25 EM ^Y 2C 1011001 59 89 Y
0011010 1A 26 SUB ^Z 15 1011010 5A 90 Z
01 0011011 1B 27 Esc 1011011 5B 91 [
0011100 1C 28 FS 1011100 5C 92 \
0011101 1D 29 GS 1011101 5D 93 ]
0011110 1E 30 RS 29 1011110 5E 94 ^
0011111 1F 31 US 35 1011111 5F 95 _
0100000 20 32 SP 0D 1100000 60 96 `
02 0100001 21 33 ! 1E 1100001 61 97 a
03 0100010 22 34 " 30 1100010 62 98 b
29 0100011 23 35 # 2E 1100011 63 99 c
05 0100100 24 36 $ 20 1100100 64 100 d
06 0100101 25 37 % 12 1100101 65 101 e
07 0100110 26 38 & 21 1100110 66 102 f
0D 0100111 27 39 ' 22 1100111 67 103 g
09 0101000 28 40 ( 23 1101000 68 104 h
0A 0101001 29 41 ) 17 1101001 69 105 i
1B 0101010 2A 42 * 24 1101010 6A 106 j
1B 0101011 2B 43 + 25 1101011 6B 107 k
33 0101100 2C 44 , 26 1101100 6C 108 l
35 0101101 2D 45 - 32 1101101 6D 109 m
34 0101110 2E 46 . 31 1101110 6E 110 n
08 0101111 2F 47 / 18 1101111 6F 111 o
0B 0110000 30 48 0 19 1110000 70 112 p
02 0110001 31 49 1 10 1110001 71 113 q
03 0110010 32 50 2 13 1110010 72 114 r
04 0110011 33 51 3 1F 1110011 73 115 s
05 0110100 34 52 4 14 1110100 74 116 t
06 0110101 35 53 5 16 1110101 75 117 u
07 0110110 36 54 6 2F 1110110 76 118 v
08 0110111 37 55 7 11 1110111 77 119 w
09 0111000 38 56 8 2D 1111000 78 120 x
0A 0111001 39 57 9 2C 1111001 79 121 y
34 0111010 3A 58 : 15 1111010 7A 122 z
33 0111011 3B 59 ; 1111011 7B 123 {
2B 0111100 3C 60 < 1111100 7C 124 |
0B 0111101 3D 61 = 1111101 7D 125 }
2B 0111110 3E 62 > 1111110 7E 126 ~
0C 0111111 3F 63 ? 53 1111111 7F 127 DEL