Kodierung von Zeichen

Damit Computer Zeichen, wie zum Beispiel Buchstaben, Ziffern und Symbole, speichern können, wird jedem Zeichen eine eindeutige, ganze Zahl zugewiesen. Diese Zahl, der sogenannte Zeichencode, wird vom Computer ins Binärsystem übersetzt und gespeichert.

Häufig wird der Zeichencode nicht als Dezimalzahl, sondern als Hexadezimalzahl dargestellt.

Bekannte Zeichenkodierungen sind ASCII1 und Unicode.

ASCII

ASCII umfasst 128 Zeichen, denen als Zeichencodes die Dezimalzahlen 0 bis 127 zugeordnet sind. ASCII sieht vor, dass bei der Umrechnung dieser Dezimalzahlen ins Binärsystem das Ergebnis stets als siebenstellige Binärzahl dargestellt wird. Führende Nullen werden daher ebenfalls angegeben.

Dem ersten Zeichen ist damit als Zeichencode die Dezimalzahl 0 bzw. die Binärzahl 0000000 zugeordnet und dem 128. Zeichen entsprechend die Dezimalzahl 127 bzw. die Binärzahl 1111111.

Merke: ASCII-Zeichenkodierung
Zeichencode
(dezimal):
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
Zeichencode
(hexadezimal):
21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34
Zeichen: ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4
Zeichencode
(dezimal):
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
Zeichencode
(hexadezimal):
35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48
Zeichen: 5 6 7 8 9 : ; < = > ? @ A B C D E F G H
Zeichencode
(dezimal):
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
Zeichencode
(hexadezimal):
49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C
Zeichen: I J K L M N O P Q R S T U V W X Y Z [ \
Zeichencode
(dezimal):
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
Zeichencode
(hexadezimal):
5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D
Zeichen: ] ^ _ ` a b c d e f g h i j k l m
Zeichencode
(dezimal):
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
Zeichencode
(hexadezimal):
6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D
Zeichen: n o p q r s t u v w x y z { | }
Abb. 1: ASCII-Kodierungen
Beispiel: dezimaler und binärer Zeichencode

Zum Beispiel ordnet ASCII dem Zeichen ‚A‘ als Zeichencode die Dezimalzahl 65 zu. Ins Binärsystem umgerechnet, ergibt dies die Binärzahl 1000001.

Unicode

ASCII umfasst nur 128 Zeichen, darunter lediglich das lateinische Alphabet. Um den Anforderungen der verschiedenen Sprachen gerecht zu werden und einen internationalen Standard zur Zeichenkodierung zu etablieren, wurde der Unicode entwickelt.

Der Unicode-Standard ist darauf ausgelegt, bis zu 1.114.112 Zeichen zu kodieren. Die Anzahl der im aktuellen Standard tatsächlich enthaltenen Zeichen ist jedoch deutlich niedriger. Damit können alle bislang von Menschen verwendeten Schriftzeichen dargestellt werden, sofern sie in den Unicode-Standard aufgenommen wurden.

Eine übersichtliche Darstellung der Zeichen und ihres entsprechenden Unicode-Zeichencodes bietet die Website Unicode Zeichentabelle.

Merke: Unicode und UTF-8

Zeichencodes in Java

In Java kann einer Variable vom Typ char direkt ein Zeichen zugewiesen werden, indem dieses in einfache Hochkommas eingeschlossen wird.

Desweiteren kann auch der jeweilige Zeichencode zugewiesen werden.

Alternativ kann die Zuweisung auch mittels Unicode-Escape \u erfolgen. Diesem folgt dann der vierstellige, hexadezimale Zeichencode. Der gesamte Ausdruck wird in einfache Hochkommas eingeschlossen.

Umgekehrt kann mit Hilfe des cast-Operators (int) der Zeichencode eines char-Werts ermittelt werden (explizite Typumwandlung).

Beispiel
JAVA
char zeichen1 = 'A';
char zeichen2 = 65;
char zeichen3 = '\u0041';

System.out.println("Zeichen\tZeichencode (dezimal)");
System.out.println("-------------------------");
System.out.println("   " + zeichen1 + "\t   " + (int)zeichen1);
System.out.println("   " + zeichen2 + "\t   " + (int)zeichen2);
System.out.println("   " + zeichen3 + "\t   " + (int)zeichen3);
Abb. 2: Die Klasse Werkzeug (Quellcode)
Konsole
Zeichen Zeichencode (dezimal)
-----------------------------
   A         65
   A         65
   A         65
Abb. 3: Ausgabe auf der Konsole
Merke: Zuweisung eines Zeichencodes in Java