Um das Attribut "Kodierung" zu verstehen, müssen Sie den Unterschied zwischen Bytes und Zeichen verstehen .
Stellen Sie sich Bytes als Zahlen zwischen 0 und 255 vor, während Zeichen 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, Ã, ¢ .
Stellen Sie sich XML nicht als eine Folge von Zeichen vor, sondern als eine Folge von Bytes.
Stellen Sie sich vor, das System, das das XML 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 im XML verwendete Codierung kennen.
Da die meisten gängigen Codierungen in Bezug auf grundlegende alphabetische Zeichen und Symbole mit ASCII kompatibel sind, kann in diesen Fällen die Deklaration selbst davonkommen, nur die ASCII-Zeichen zu verwenden, um die Codierung anzugeben. In anderen Fällen muss der Parser versuchen, die Codierung der Deklaration herauszufinden. Da es weiß, dass die Deklaration damit beginnt <?xml
, ist es viel einfacher, dies zu tun.
Schließlich gibt das version
Attribut die XML-Version an, von der es derzeit zwei gibt (siehe Wikipedia-XML-Versionen . Es gibt geringfügige Unterschiede zwischen den Versionen, sodass ein XML-Parser wissen muss, womit er es zu tun hat. In den meisten Fällen (für Englisch) Lautsprecher sowieso), Version 1.0 ist ausreichend.