Logo: connexo websolutions
connexo websolutions
Dipl.-Inform. (FH) F. Topel
Zur Windmühle 2
58313 Herdecke
Deutschland

Fon +49 2330 892052
Mobil +49 170 1814131
info@connexo.de
http://www.connexo.de/



Encoding: UTF-8 vs. ISO 8859-1(5)

Zeichenkodierung: Was ist Encoding?

Auch wenn man in der Computerwelt häufig von plain-Text redet, gibt es so etwas nicht wirklich! Ein Computer rechnet und speichert Informationen mit 0 und 1, man musste also eine Möglichkeit finden Buchstaben, Zahlen und Sonderzeichen binär darzustellen und zu speichern.
Es wurden also Übersetzungstabellen, so genannte Character sets (kurz: Charsets) eingeführt, diese verbinden eine Bit-Folge mit darstellbaren Zeichen. Ein Encoding/eine Kodierung ist die Regel mit der die Bits einem Zeichen zugeordnet werden, die Begriffe werden oft synonym behandelt, sind jedoch nicht unbedingt synonym. Im Laufe der Zeit entstanden Tausende von Zeichensätzen, doch die meisten von ihnen verschwanden wieder. Eines der ersten war, das teilweise heute noch verbreitete, ASCII (1963).

[Quelle: Michael Schönitzer]

ASCII

ASCII belegt 7-Bit, und kann damit 27, also 128 Zeichen darstellen, davon sind 95 druckbare Zeichen und 33 nicht-druckbare. Umlaute und andere Sonderzeichen bleiben außen vor.

[Quelle: Michael Schönitzer]

ISO-8859-1 / ISO 8859-15

Da die wenigen Zeichen die ASCII bot nicht ausreichten, wurden 15 Charsets unter der Norm ISO 8859 standardisiert. ISO 8859 belegte 8 Bit, konnte also maximal 256 Zeichen darstellen. Von diesen 15 Encodings sind ISO 8859-1, ISO 8859-15 und das auf ISO 8859-1 basierende Windows-1252 (welches oft falscherweise als ANSI bezeichnet wird) heute die wichtigsten. Bei ISO 8859 wurden geschickterweise die ersten 128 bei allen Teilnormen identisch direkt aus ASCII kopiert. Dadurch blieb ISO 8859 zu ASCII kompatibel. In zehn der fünfzehn ISO 8859 sind die deutschen, sowie die meisten west- und mitteleuropäischen Sonderzeichen (ä,ö,ü,é,è,ç,ô...) vorhanden, sie sind Latin 1-10 genannt. Auch für viele andere Zeichen gibt es Unternormen von ISO 8859. Doch spätestens für fernöstlichen Sprachen war ISO 8859, mit maximal 256 Zeichen, ungeeignet. [Quelle: Michael Schönitzer]

ISO 8859-15 ist eine Erweiterung von ISO 8859-1 um das Eurozeichen.

Die ISO-8859-Normen werden von ISO/IEC nicht mehr aktiv weiterentwickelt. Für die Zukunft wird eine fortschreitende Ablösung dieser Zeichensätze durch ISO UCS, inhaltsgleich zum Unicode-Standard, erwartet. Dieser findet vor allem in Form der UTF-8-Kodierung immer mehr Verbreitung. [Quelle: Wikipedia]

Unicode

Nach einiger Zeit beschloss das 1991 dafür neu gegründete Unicode Consortium das unmögliche wahr zu machen, eine Zeichentabelle zu erstellen in der alle Zeichen oder Textelemente die es auf der Welt gibt vorhanden sind. Die Zeichentabelle wurde Unicode gennant, es sei darauf hingewiesen das Unicode jedoch kein Encoding, sondern nur eine Zeichentabelle (Charset) ist. Die erste Version von Unicode benützte 16-Bit konnte also 65.536 Zeichen darstellen, es stellte sich jedoch schnell heraus das dies unzureichend war, also wurde mit der Version 2.0 der Codebereich um weitere 16 je 16 Bit große Bereiche, sogenannte Planes, somit sind 17*216 also 1.114.112 Zeichen verfügbar. Davon sind in der aktuellen Version 5.0.0 etwas mehr als 99.000 Zeichen, also ca. 8,88% belegt. Die ersten 65.536 Zeichen nennt man jetzt den "Basic Multilingual Plane" (BMP).
Die Planes sind:

  • Plane 0 (0000–FFFF): Basic Multilingual Plane (BMP)
  • Plane 1 (10000–1FFFF): Supplementary Multilingual Plane (SMP)
  • Plane 2 (20000–2FFFF): Supplementary Ideographic Plane (SIP)
  • Planes 3 to 13 (30000–DFFFF) Unbelegt
  • Plane 14 (E0000–EFFFF): Supplementary Special-purpose Plane (SSP)
  • Plane 15 (F0000–FFFFF) und Plane 16 (100000–10FFFF): Private Use Area (PUA): Für Privaten Gebrauch, nicht vom Unicode Standard beschrieben

Über die Verwendung der Planes gibt die englischsprachige Wikipedia Auskunft.
Unicode ist ebenso wie ISO-8859-1 kompatibel zu ASCII, man hat um die Kompatibilität zu verbessern etliche Encodings komplett kopiert. Dass dabei Doppelungen vorkammen versteht sich von selbst, so gibt es zum Beispiel 19 Leerzeichen.
Es gibt verschiedene auf Unicode basierende Encodings die wichtigsten sind heute UTF-8 und UTF-16 , wobei UTF-8 sehr viel verbreiterter ist, da es weniger Platz als UTF-16 belegt und trotzdem alle Unicode zeichen darstellen kann.

[Quelle: Michael Schönitzer]

UTF-8

Unicode braucht eigentlich 4 Byte für jedes Zeichen. Da dies in Vergleich zu anderen Encodings sehr viel ist, wurde UTF-8 entwickelt. UTF-8 braucht für verschiedene Zeichen unterschiedlich viele (1 - 6) Byte. Ob ein Byte nun ein einzelnes Zeichen ist, oder ob mit dem vorherigen oder mit dem nächsten Byte zusammenhängt, entscheidet UTF-8 mithilfe der ersten Bits des Bytes.
Beginnt ein Byte mit einer '0', so ist es ein allein stehendes Byte, die Werte nach der Null entsprechen der dualen Unicode-Nummer von 00000000 00000000 bis 00000000 01111111 und damit auch der gleichen ASCII-Nummer.
Beginnt ein Byte jedoch mit '110' so gehört es mit dem nachfolgendem Byte zusammen, dieses fängt mit '10' an. Die Nummer nach dem '110' zusammen mit der Nummer nach dem '10' des zweiten Bytes ergeben die Unicode-Nummer.
'1110' kennzeichnet den Beginn eines 3 Byte langes Zeichen. Beide folgenden Bytes fangen mit '10' an.
Will man einen mehr als 16 Bit langen Kode speichern, so nimmt man für das erste Byte ebenfalls '1110' und fügt einfach mehr (bis zu 6) Bytes mit einem '10' an.

[Quelle: Michael Schönitzer]

Warum UTF-8?

 

Related Links

Hier finden Sie weiterführende Informationen zu den Themen der Seite.

Unicode / UTF-8

 


 
connexo websolutions Frank Topel | Zur Windmühle 2 | D-58313 Herdecke

Mobil +49 170 18 14 13 1