ISO-8859

Sprachen-spezifische Zeichencodes von je 256 Zeichen

ISO-8859 definiert eine ganze Familie internationaler Standards für Zeichen-Codes.
Jeder Code wird umfasst 8 Bit (1 Byte) und kann daher max. 256 Zeichen definieren. Diese Codes werden heute in der IT allgemein verwendet.
Die erste Hälfte aller Codes (Zeichen 0..127) enthält den ASCII-Code als konstante Untermenge.
Die zweite Hälfte ist je nach Standard verschieden und ist so zusammengesetzt, dass damit jeweils ein möglichst großer Sprachraum erfasst wird.
ZeichencodesZeichencodes PC-Codes für Buchstaben, Ziffern und Sonderzeichen
ISO-8859 Live Die populäre (aber überholte) europäische Lösung
Sonderzeichen Die Codierung nationaler Sonderzeichen in Webseiten (ÄÖÜäöü߀...)
Geschichte Geschichte, Bedeutung und Ausblick der ISO-8859 Familie
Code-Bereiche Technische Details zu den verschiedenen Code-Bereichen
Latin-1 Update Der Versuch einer Renovierung von ISO-8859-1
Verwandte Themen ASCII, HTML-Maskierung, Unicode
Links Ausgewählte Links zum Thema 'ISO-8859'

ISO-8859 Familie Live

Klicken sie auf einen ISO-Code, um ihn rechts anzuzeigen.

► ISO 8859-1 (Latin 1, Western Europe)
Unicode U0080 (Latin-1 Supplement)
► ISO 8859-2 (Latin 2, Eastern Europe)
► ISO 8859-3 (Latin 3, Southern Europe)
► ISO 8859-4 (Latin 4, Northern Europe)
► ISO 8859-5 (Cyrillic)
Unicode U0400 (Cyrillic)
► ISO 8859-6 (Arabic)
Unicode U0600 (Arabic)
► ISO 8859-7 (Greek)
Unicode U0370 (Greek and Coptic)
► ISO 8859-8 (Hebrew)
Unicode U0590 (Hebrew)
► ISO 8859-9 (Latin 5, Turkish)
► ISO 8859-10 (Latin 6, Nordic)
► ISO 8859-11 (Thai)
► ISO 8859-12 (noch nicht festgelegt)
► ISO 8859-13 (Latin 7, Baltic)
► ISO 8859-14 (Latin 8, Gaelic/Welsh, Celtic)
► ISO 8859-15 (Latin 9, update Latin 1)
► ISO 8859-16 (Latin 10, Balkan)
In diesem → Innenrahmen wird eine Original-(!)-Webseite im ausgewählten Code ISO-8859-1 angezeigt:
Normale Anzeige
Quelltext-Demo
Klick auf ein Zeichen kopiert es in dieses Textfeld. Dort wird Unicode verwendet, daher kann jedes Zeichen richtig dargestellt werden - Auch dann, enn ein Text aus mehreren ISO-8859 Zeichensätzen gemischt wird.
Im → Innenrahmen (rechts oben) wird eine echte Webseite im ausgewählten Code angezeigt. Sie enthält im <head> diesen Code zur Festlegung ihres Zeichensatzes:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Keine Simulation !
Die Zeichen in der Tabelle werden nicht simuliert: Sie sind so eingesetzt wie sie beim Tippen auf der entsprechenden Original-Tastatur erzeugt werden.
Kein Fehler !
Wenn nicht alle Zeichen angezeigt werden, dann ist das kein Programm-Fehler der Demo-Webseite: Ihr Betriebssystem oder Browser können meist nicht alle ISO-Zeichen anzeigen.
Besuchen sie die → Unicode-Seite: Mit Unicode können in allen neueren Betriebssystemen weit mehr Zeichen angezeigt werden.

Sonderzeichen in Webseiten

ISO-8859 'pur'

In Mitteleuropa werden die meisten Webseiten in ISO-8859 Code erstellt. Das liegt weniger an den besonderen Vorteilen dieser Zeichensatz-Familie sondern an der Ahnungslosigkeit der meisten WebDesigner.
Beispiel: Im <head> einer Webseite wird der Zeichensatz ISO-8859-1 (Latin-1) deklariert:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Danach lassen sich alle nationalen Sonderzeichen im HTML-Quelltext verwenden, z.B.
<div>Eine große grüne Fläche</div>
Die Webseite wird bei Betrachtung am eigenen PC korrekt angezeigt.

Man muss sich darauf verlassen, dass keines der mit der Verbreitung dieser Webseite befassten Programme die Sonderzeichen verändert.
Die meisten beteiligten Computer (Router, Provider, Suchmaschinen, ...) verwenden ein internationales Betriebssystem. Die meisten Programme laufen in einer internationalen Version, die keine nationalen Sonderzeichen kennt.
Die Webseite wird nur dann richtig angezeigt, wenn Betriebssystem und Browser der/des BesucherIn den gleichen nationalen Zeichensatz geladen haben und auch verwenden.
Beispiel: Ehrgeizige Tourismus-Betriebe bemühen sich zwar um internationale Gäste, wissen jedoch nicht, dass ihre Webseiten außerhalb ihres Sprach-Gebietes höchst fehlerhaft angezeigt werden. Im schlimmsten Fall wird nicht einmal Staat und Ort richtig angezeigt, z.B. Österreich, München, Kitzbühel, Tragöß, ...

Wenn ihre Webseiten derartigen Code enthalten, dann sollten sie das ändern: Es gibt viele Programme und Möglichkeiten, jedes Sonderzeichen einer Datei vollautomatisch in eine HTML-Maskierung (rechts) umzuwandeln.

Details zu den Themen ASCII, HTML-Maskierung

ISO-8859 'verbessert'

In dieser Variante wird zwar ein Zeichensatz ISO-8859 deklariert, jedoch nicht angewendet.
Beispiel: Im <head> einer Webseite wird der Zeichensatz ISO-8859-1 (Latin-1) deklariert:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Alle Sonderzeichen werden jedoch im HTML-Quelltext maskiert, z.B.
<div>Eine gro&szlig;e gr&uuml;ne Fl&auml;che</div>
Diese Webseite wird auf jedem PC und Browser richtig angezeigt.

Nur die Zeichen mit Code 32..126 (#20..7E) werden im HTML-Quellcode verwendet. Als Sonderzeichen werden nur Tabulator (TAB) und Zeilen-Umbruch (CR, LF) verwendet. Alle Zeichen stammen aus dem Standard → ASCII-Code, der auf jedem PC installiert ist, unabhängig von Standort und Betriebssystem.

Alle anderen (Sonder)-Zeichen werden maskiert, d.h. durch eine besondere Folge von ASCII-Zeichen ersetzt, die jeder Browser richtig versteht. Alle HTML-Maskierungen beginnen mit einem & Zeichen und enden mit einem ; Zeichen.
Details zur → HTML-Maskierung.

In dieser Variante lassen sich auf der gleichen Webseite alle weltweit verwendeten Sonderzeichen in maskierter Form verwenden.

Jedes halbwegs professionelle Web-Editor Programm lässt sich so einstellen, dass diese Variante verwendet wird.

Nachteil: Als EntwicklerIn können sie keine Fehler bemerken: Sauber codierte Zeichen wie &Auml; oder &#xC4; werden bei Ansicht der Webseite genauso angezeigt wie ein gefährlich 'national' codiertes Zeichen Ä
Wenn man derartige Fehler übersieht, dann können die gleichen Fehler auftreten wie bei 'ISO-8859 pur' (links).

Tipp: Wozu einen Zeichensatz deklarieren, den sie nicht verwenden ?   Wechseln sie konsequent zu einem internationalen Zeichencode wie → ASCII oder → Unicode !

Unicode

Dieser Zeichensatz ist nicht auf bestimmte nationale sonderzeichen beschränkt, sondern für alle weltweit verwendeten Zeichen ausgelegt.

Beispiel: Im <head> einer Webseite wird der Zeichensatz → Unicode in der platzsparenden Codierung UTF-8 deklariert:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Die nationalen Sonderzeichen können (optional) im HTML-Quelltext maskiert werden, z.B. so
<div>Eine gro&szlig;e gr&uuml;ne Fl&auml;che</div>
Diese Webseite wird auf jedem PC und Browser richtig angezeigt.

Jedes halbwegs professionelle Web-Editor Programm lässt sich so einstellen, dass diese Variante verwendet wird. Damit wird (je nach Qualität des Programms) die unabsichtliche Verwendung nationaler Sonderzeichen im HTML-Quelltext zuverlässig verhindert.

Die links vorgestellte Variante ist ein Kompromiss zwischen Lesbarkeit und platzsparender Codierung. Wenn man Sonderzeichen nicht maskiert sondern tatsächlich UTF-8 anwendet, dann braucht man dafür nur 2 Byte je Zeichen (die Maskierung links verwendet dafür 6-7 Byte). Der Quelltext ist dann jedoch mit einfachen Editor-Programmen nicht mehr lesbar.
Details zu den Themen Unicode, UTF-8

ASCII

Dieser Zeichensatz wird in Europa zu Unrecht nur selten verwendet.

Beispiel
<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
Alle nationalen Sonderzeichen müssen im HTML-Quelltext maskiert werden, z.B. so
<div>Eine gro&szlig;e gr&uuml;ne Fl&auml;che</div>

Details zu den Themen ASCII, HTML-Maskierung

Derartige Webseiten werden auf jedem PC und Browser richtig angezeigt.

Man verwendet kompromisslos genau den angekündigten Zeichensatz. Dennoch können alle weltweit verwendeten Sonderzeichen in maskierter Form verwendet werden.

Tipp: Verwenden sie im Quelltext von Webseiten niemals nationale Sonderzeichen wie äöüÄÖÜß sondern nur maskierte Zeichen. In diesem Fall ist die Deklaration des Zeichensatzes belanglos, da in Wirklichkeit nur charset=ascii verwendet wird und damit nur jene 128 Zeichen, die in allen Zeichensätzen identisch definiert sind.

Die Euro-Falle

Die Codierung desZeichens birgt dank Microsoft eine besondere Falle: Windows Betriebssysteme und -Software verwenden nicht die Standard ISO-8859 Zeichensätze sondern leicht modifizierte eigene Versionen. (Meist ohne Warnung auch dann, wenn ausdrücklich ISO-8859-1 deklariert wurde).
Davon ist u.a. dasZeichen betroffen

Kollision:
DasZeichen ist in ISO-8859-1 (Latin-1) überhaupt nicht enthalten.
Deutsche Win-Systeme verwenden dafür Code 128
Alle ISO-Zeichensätzen definieren den gleichen Code 128 für das (kaum verwendete) Steuerzeichen PAD

Folge:
Bei Verwendung von M$ Software zur Herstellung einer Webseite kann dasZeichen (als Einzel-Byte mit dem Wert 128) unbemerkt in den HTML Quellcode gelangen. Bei Verwendung des M$IE Browsers auf einem deutschen Win-Betriebssystem fällt der Fehler nicht auf.
Auf allen anderen Betriebssystemen, mit anderen Browsern und in anderen Ländern ist das Aussehen des Zeichens unbestimmt !

Lösung:
Verwenden sie im HTML-Quelltext unbedingt eine dieser beiden Maskierungen für das Euro-Zeichen:
&euro;   &#x20AC;
Nur damit wird garantiert auf jedem Browser das Standard Unicode-Zeichenangezeigt.
Kontrollieren sie, ob ihre Webseiten so codiert werden !

Entwicklung

HTML- Dokumente werden ebenso wie andere Text-Dateien (CSS, Javascript, ...) und Script-Programme (Perl, PHP, Python...) am besten halb- oder vollautomatisch verwaltet.
Man kann sie z.B. automatisch auf die Sonderzeichen ÄÖÜäöüß durchsuchen lassen.

Das funktioniert allerdings nur dann, wenn auch die Kommentare keine Sonderzeichen enthalten !
Tipp: Verwenden sie in Kommentaren keine Sonderzeichen. International üblich sind ohnehin nur Kommentare in einfachem Englisch.
Ausnahme: → UTF-codierte Dateien können auch Zeichen mit Codes>127 enthalten !

ISO-8859 - Geschichte und Zukunft

ISO-8859 definiert eine Reihe internationaler Standards für Zeichen-Codes. Jeder Code wird umfasst 8 Bit (1 Byte) und kann daher max. 256 Zeichen definieren.
Diese Codes werden derzeit (!) in der IT häufig verwendet. Allerdings werden sie in allen neueren Entwicklungen von → Unicode abgelöst.
Die erste Hälfte aller Codes (Zeichen 0..127) enthält den → ASCII-Code als konstante Untermenge.
Die zweite Hälfte (Zeichen 128..255) wurde so zusammengesetzt, dass jeder Code einen möglichst großen Sprachraum erfasst. Deshalb sind einige Zeichen in mehreren Codes enthalten.
ISO-8859 wurde von der ECMA (European Computer Manufacturers Association) entwickelt und von der ISO (International Standards Organisation) definiert. Diese Standard-Familie wurde vorwiegend für den europäischen Bedarf entwickelt. Sie erfasst daher weit mehr Sprachen als der US-ASCII-Code, schließt aber immer noch alle Kulturen aus, die Sprachen mit mehr als 96 eigenen Zeichen verwenden. Die einzelnen Codes der ISO-8859-Familie werden durch eine nachgestellte Zahl unterschieden, z.B. ISO-8859-1 (siehe oben)
Der Vorteil und historische Verdienst der ISO-Standards war der endgültige Abschied von Dialekten des US- → ASCII-Code mit seinen nur 95 darstellbaren Zeichen.
Das gilt allerdings nicht für die internen Bereiche der IT (z.B. Quellcode), wo sinnvoll auch weiterhin nur der 7-Bit ASCII-Code verwendet wird.
Ein großer Vorteil ist die Beschränkung auf 1 Byte pro Zeichen. Deshalb dürfte sich vor allem 'Latin-1' noch längere Zeit für Webseiten und einige andere IT-.Bereiche halten.
Der größte Nachteil der ISO Zeichensätze: Sie schließen einander gegenseitig aus, d.h. es ist z.B. nicht möglich, deutsche, griechische und slawische Zeichen nebeneinander darzustellen.
Das ist in einer globalisierten Welt nicht haltbar, vor allem nicht innerhalb der multi-sprachlichen EU.
Die Beschränkung auf 1 Byte pro Zeichen ist ein Nachteil, weil damit die Codierung aller Sprachen ausgeschlossen ist, die mehr als 96 eigene Zeichen erfordern.
Alle neuen Entwicklungen ersetzen daher ISO-8859 durch → Unicode bzw. → UTF.
Ein besonderer Nachteil der → ISO-8859-Standards ist die Einschränkung auf nur 96 eigene Zeichen pro Zeichensatz. Bei Verzicht auf die zusätzlichen 32 Sonderzeichen 128..159 (#80..9F) hätte man in jedem ISO-Zeichensatz 128 Zeichen (+ 33%) mehr eigene Zeichen untergebracht.
M$ verwendet diese Codes in → Windows-1252 als druckbare Zeichen. Diese nicht Standard-konforme Sonderlösung ist die Ursache zahlreicher Fehler und Probleme mit Zeichensätzen.
Der ISO-8859 Standard ist älter als der Euro. Daher ist das Euro--Zeichen ausgerechnet in diesem 'europäischen' Zeichensatz nicht enthalten. Verwenden sie dafür nur das → Unicode-Zeichen U+20AC bzw. in HTML die Maskierung &euro;

ISO-8859 - Technische Details

Der Bereich 0..31 (#00..1F) ist in allen verwendeten Zeichen-Codes gleich: → ASCII, alle Zeichensätze der ISO-8859 Familie, → Unicode U0000 (Controls and Basic Latin). Er enthält 32 nicht druckbare Steuerzeichen 0..31 (#00..1F)
Besondere Bedeutung haben diese Zeichen (die auch in jedem HTML-Quelltext vorkommen dürfen:
HT (Code 9, Tabulator, TAB), LF (Code 10. = #0A, LineFeed), CR (Code 13. = #0D, CarriageReturn).
Der Bereich 32..127 (#20..7F) ist ebenfalls in allen verwendeten Zeichen-Codes gleich: → ASCII, alle Zeichensätze der ISO-8859 Familie, → Unicode U0000 (Controls and Basic Latin). Er enthält mit 2 Ausnahmen nur druckbare Zeichen, z.B. 0..9, A..Z, a..Z, alle lateinischen Interpunktionen wie !"*+,-./:;?, alle Klammern ([{< >}]) und einige Sonderzeichen wie #$%&@\_|
Nicht druckbar (je nach Interpretation) sind das erste und das letzte Zeichen dieses Bereichs: Das Leerzeichen (Code 32=#20) und das Lösch-Zeichen DEL (delete), Code 127.=#7F
Der Bereich 128..159 (#80..#9F) enthält in den Standard Zeichensätzen 32 nicht druckbare Steuerzeichen, die allerdings kaum verwendet werden. M$ verwendet diesen Bereich in seinem Zeichensatz → Windows-1252 als druckbare Zeichen. Diese Sonderlösung ist die Ursache zahlreicher Fehler und Probleme mit Zeichensätzen. Zeichensatz ISO-8859-1 ist daher nicht identisch mit Windows-1252 !

Verwenden sie keinesfalls diese Zeichen zur Codierung von Text, z.B. Code 128 (#80) für das €-Zeichen. Alle Zeichen dieses Bereichs sollten Unicode codiert werden, z.B. U+20AC für das €-Zeichen. Diese Codierung funktioniert mit jeder Software (auch von M$) problemlos und fehlerfrei.
Der Bereich 160..255 (#A0..#FF) enthält 96 druckbare Zeichen, und zwar unterschiedliche je nach ISO-Zeichensatz.

Benannte Sonderzeichen:
NBSP (160. = #A0) . . geschütztes Leerzeichen (non-breaking space)
SHY (173. = #AD) . . optionale Silbentrennung (soft hyphen)
Basis ist der Zeichensatz ISO-8859-1, identisch mit → Unicode U0080 (Latin-1 Supplement) und identisch in diesem Code-Bereich mit → Windows-1252.

Die anderen Mitglieder der ISO-8859 Familie enthalten hier teilweise andere Zeichen. (↑ Live-Beispiele oben). Ein HTML-Dokument ist komplett in einem bestimmten Zeichensatz abgefasst, ein Wechsel innerhalb von Dokumenten nicht vorgesehen. Daher ist es unmöglich, Zeichen verschiedener ISO-8859 Zeichensätze zu mischen. Nur bei Verwendung von → Unicode oder mit → HTML-Maskierung können alle Zeichen verwendet und miteinander gemischt werden.
ISO-8859-1 (Latin-1)
Dieses Mitglied der ISO-8859 Familie ist in Mitteleuropa am weitesten verbreitet. Die wichtigsten im deutschen Sprachraum verwendeten Sonderzeichen äöüÄÖÜß sind darin codiert. Dieser Standard wurde 1987 von der ECMA definiert.
Seit der explosionsartigen Verbreitung des Internet geht die Verwendung der in ISO-8859-1 nicht enthaltenen Zeichen stark zurück, wie z.B. in Deutsch die speziellen Anführungszeichen „ “ .

Der Zeichensatz IBM-819 (CCSID 819) dürfte identisch mit 'Latin-1' sein (keine Gewähr !).

HTML-Dokumente:

Der Zeichensatz einer Webseite wird so festgelegt wie im Beispiel rechts gezeigt.
HTML:
<meta http-equiv="Content-Type" content=" text/html; charset=iso-8859-1">
Im Gegensatz zu den meisten anderen Code-Tabellen enthält diese Webseite 'echte' Zeichen und keine Grafik. Deshalb lassen sich sämtliche angezeigten Zeichen kopieren und in andere Programme einsetzen. Darüber hinaus lassen sich Tabellen automatisch erstellen (z.B. mit PHP) und benötigen damit viel Speicherplatz wie typische Zeichensatz-Grafiken.

ISO-8859-15 ('Update Latin-1')

Im Laufe der praktischen Anwendung zeigten sich einige Schwächen am meist-verwendeten Zeichencode ISO-8859-1 ('Latin-1'). Die logische Folge war ein Update in Form von ISO-8859-15. Dazu wurden selten verwendete Zeichen entfernt, und einige dringend benötigte Zeichen an deren Stelle gesetzt. Das hat nicht gerade zur Klärung beigetragen. Dieser Code wäre zwar besser für die aktuelle mitteleuropäische PC-Praxis geeignet, wird jedoch kaum angewendet.


XHTML CSS