Ein Zeichencode dient zur Speicherung von Schriftzeichen (Buchstaben, Ziffern, Sonderzeichen, …) in einem Computersystem. Da ein Computer nur Zahlen verarbeiten kann, wird jedem Schriftzeichen eine eindeutige Zahl (Code) zugeordnet. Dieser Code wird dann im Computer als binäre Zahl gespeichert.
Solche Zeichencodes gab es schon lange bevor es Computersysteme gab. Zum Beispiel wird im Morsealphabet jedem Schriftzeichen eine Folge von Punkten und Strichen zugeordnet. Beim Morsen übersetzt der Sender seinen Text den Morsecode. Dieser Morsecode kann dann mit kurzen und langen Lichtimpulsen übermittelt werden. Der Empfänger empfängt die Lichtimpulse und übersetzt diese zurück in den entsprechenden Buchstaben. Natürlich kann dies nur funktionieren, wenn Sender und Empfänger den gleichen Zeichencode verwenden.
Wenn ich beim Schreiben dieses Wiki-Artikels auf eine Taste tippe, geschieht folgendes:
Der Computer benötigt den Zeichencode, damit er den gewünschten Buchstaben darstellen kann.
Wenn Sie diese Wikiseite aufrufen (was Sie offensichtlich gerade tun), wird:
Der American Standard Code for Information Interchange ist eine Zeichencodierung für die Verarbeitung von Daten. Die meisten heutigen Zeichencodierungen basieren auf der ASCII-Zeichencodierung.
Jedem Zeichen wird ein Code aus 7 Bits zugeordnet, womit insgesamt 128 unterschiedliche Zeichen zur Verfügung stehen:
Im ASCII-Code entspricht jedes Zeichen einem Byte. Das vorderste Bit wurde ursprünglich als Paritätsbit zum Erkennen von Fehlern genutzt:
Dadurch konnte man erkennen, wenn ein einzelnes Bit falsch übermittelt wurde.
Der ASCII-Code enthält keine Umlaute oder Buchstaben mit Akzent (z.B. é, â). Deshalb wurden Erweiterungen des ASCII-Codes entwickelt, die alle 8 Bits nutzen und somit 256 verschiedene Zeichen zur Verfügung stellten. Dabei wurde jeweils darauf geachtet, dass die ersten 128 Codes ('00'x bis '7F'x bzw. 0 bis 127) dem ASCII-Code entsprechen. Diese Zeichencodes werden als Codepage bezeichnet.
Der Standard ISO 8859-1 definiert einen solchen erweiterten Code für die westeuropäischen Sprachen. Er versucht, möglichst viele Zeichen der westeuropäischen Sprachen abzudecken.
Der Unicode wurde entwickelt, um den Anforderungen der verschiedenen Sprachen gerecht zu werden. Diese Zeichencodierung verwendet bis zu 32 Bit (4 Byte) pro Zeichen und könnte damit fast 4.3 Milliarden verschiedener Zeichen abbilden.
UTF-8 ist eine 8-Bit-Codierung die auf Unicode basiert. Gleichzeitig ist UTF-8 abwärtskompatibel zum ASCII-Code.
Siehe Unicode
Unicode ist ein internationaler Standard für die Codierung von Zeichen. Das Ziel von Unicode ist es, jedem Zeichen aus jedem Sprachraum einen bestimmten Code zuzuordnen.
Jedem Zeichen ist im Unicode-Standart ein Codepunkt zugeordnet. Dieser Codepunkt wird wie folgt dargestellt:
U+
vorangestellt.
Zum Beispiel U+0040
für das Zeichen @
.
In modernen Computersystemen ist der Unicode Basis für die verwendeten Zeichencodierungen UTF-8 und UTF-16. Eine Textvariable wird also nicht im Unicode gespeichert.
Nicht ganz ernst gemeint:
Echte Programmierer kennen die Binärcodes aller Unicode-Zeichen, auswendig!
Siehe auch UTF-8 und http://www.utf8-zeichentabelle.de/
Die Abkürzung steht für Universal Character Set Translation Format. Als universeller Zeichencode hat UTF-8 vor allem im Internet eine grosse Bedeutung. So waren im Juli 2014 mehr als 80% 1) aller Webseiten mit UTF-8 codiert.
Bei der UTF-8-Codierung wird jedem Zeichen eine Bitkette von 8 bis 32 Bit (1 bis 4 Byte) zugeordnet. Somit könnten theoretisch fast 4.3 Milliarden Zeichen abgebildet werden. Die ersten 128 Zeichen (Indizes 0 - 127) sind identisch mit dem ASCII-Code. Dadurch lassen sich insbesondere englische Texte mit nur einem Byte Speicherplatz pro Zeichen gespeichert werden. Somit können selbst Programme, die nicht UTF-8-fähig sind, die Daten bearbeiten.
Die ersten 127 Zeichen der UTF-8-Codetabelle entsprechen den ASCII-Zeichen. Diese Zeichencodes sind jeweils 8 Bit lang und beginnen mit einen Bit '0'.
Bits | Bedeutung |
---|---|
0xxx xxxx | Start-Byte, Länge des Codes: 1 Byte |
Allen Zeichen die nicht Teil der ASCII-Codetabelle sind, wird ein 16 - 32 Bit langer Zeichencodes zugeordnet.
Die ersten Bits innerhalb des Start- und Folge-Bytes dienen zur Unterscheidung der Art und Länge des Codes.
Die restlichen Bits (unten mit x
dargestellt) stellen den eigentlichen Wert des Zeichens dar:
Bits | Bedeutung |
---|---|
10xx xxxx | Folge-Byte |
110x xxxx | Start-Byte, Länge des Codes: 2 Byte |
1110 xxxx | Start-Byte, Länge des Codes: 3 Byte |
1111 0xxx | Start-Byte, Länge des Codes: 4 Byte |
Wir haben somit 16 Bits (4 aus dem Start-Byte und je 6 aus den Folge-Bytes) die den Zeichencode darstellen: 0010 000010 101100
0 0010 0000 1010 1100
20 AC
Die UTF-16-Kodierung wird oft zur internen Speicherung von Zeichen auf dem Computer verwendet.
Zum Beispiel werden char
-Variablen in Java im UTF-16-Code abgelegt.
Bei UTF-16 wird jedem Zeichen eine Bitkette von 16 oder 32 Bit (2 oder 4 Byte) zugeordnet.
Siehe Extended_Binary_Coded_Decimals_Interchange_Code
Der Extended Binary Coded Decimals Interchange Code (sinngemäss „erweiterter Austauschcode für binär codierte Dezimalziffern“) wurde von IBM entwickelt. Die Entwicklung fand zeitlich parallel zum ASCII-Code statt.
Aus Zeitgründen konnte IBM für seine Grossrechner keine ASCII-kompatiblen Ausgabegeräte entwickeln. Daher wurde der bereits bestehende 6 Bit lange BCD-Code erweitert.
Im Gegensatz zu ASCII (7 Bit) verwendet EBCDIC 8 Bits zur Speicherung eines Schriftzeichens. Heute wird der EBCDIC-Code fast nur noch von Grossrechnern (z.B. IBM z/System) verwendet.