Eine Codierung ist eine Zuordnung zwischen Bytes und Zeichen aus einem Zeichensatz. Daher ist es hilfreich, den Unterschied zwischen Bytes und Zeichen zu diskutieren und zu verstehen .
Stellen Sie sich Bytes als Zahlen zwischen 0 und 255 vor, während Zeichen abstrakte Dinge wie "a", "1", "$" und "Ä" sind. Der Satz aller verfügbaren Zeichen wird als Zeichensatz bezeichnet .
Jedes Zeichen hat eine Folge von einem oder mehreren Bytes, die zur Darstellung verwendet werden. Die genaue Anzahl und der genaue Wert der Bytes hängen jedoch von der verwendeten Codierung ab , und es gibt viele verschiedene Codierungen.
Die meisten Codierungen basieren auf einem alten Zeichensatz und einer Codierung namens ASCII, die ein einzelnes Byte pro Zeichen (tatsächlich nur 7 Bit) ist und 128 Zeichen enthält, einschließlich vieler der im US-Englisch verwendeten allgemeinen Zeichen.
Hier sind beispielsweise 6 Zeichen im ASCII-Zeichensatz, die durch die Werte 60 bis 65 dargestellt werden.
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
Im vollständigen ASCII-Satz ist der niedrigste verwendete Wert Null und der höchste 127 (beide sind versteckte Steuerzeichen).
Sobald Sie jedoch mehr Zeichen benötigen, als das grundlegende ASCII bereitstellt (z. B. Buchstaben mit Akzenten, Währungssymbolen, Grafiksymbolen usw.), ist ASCII nicht mehr geeignet und Sie benötigen etwas umfangreicheres. Sie benötigen mehr Zeichen (einen anderen Zeichensatz) und eine andere Codierung, da 128 Zeichen nicht ausreichen, um alle Zeichen aufzunehmen. Einige Codierungen bieten ein Byte (256 Zeichen) oder bis zu sechs Bytes.
Im Laufe der Zeit wurden viele Codierungen erstellt. In der Windows-Welt gibt es CP1252 oder ISO-8859-1, während Linux-Benutzer UTF-8 bevorzugen. Java verwendet UTF-16 nativ.
Eine Folge von Bytewerten für ein Zeichen in einer Codierung kann für ein völlig anderes Zeichen in einer anderen Codierung stehen oder sogar ungültig sein.
In ISO 8859-1 wird â beispielsweise durch ein Byte Wert dargestellt 226
, während es in UTF-8 zwei Bytes sind : 195, 162
. Doch in ISO 8859-1 , 195, 162
würden zwei Zeichen lang sein, Ã, ¢ .
Wenn Computer Daten über Zeichen intern speichern oder an ein anderes System übertragen, speichern oder senden sie Bytes. Stellen Sie sich vor, ein System, das eine Datei öffnet oder eine Nachricht empfängt, sieht die Bytes 195, 162
. Woher weiß es, welche Charaktere das sind?
Damit das System diese Bytes als tatsächliche Zeichen interpretieren (und sie so anzeigen oder in eine andere Codierung konvertieren kann), muss es die verwendete Codierung kennen. Aus diesem Grund wird die Codierung in XML-Headern angezeigt oder kann in einem Texteditor angegeben werden. Es teilt dem System die Zuordnung zwischen Bytes und Zeichen mit.