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.
| 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 | { | | | } |
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.
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
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);
Werkzeug (Quellcode)-----------------------------
A 65
A 65
A 65