Was ist eine Codepage?

von Herbert Stappler (Ausgabe 95/3, September 1995)

 

Wohlauf, lasset uns herniederfahren und ihre Sprache daselbst verwirren, daß keiner des anderen Sprache verstehe! (Genesis 11,7)

So mancher, der des öfteren Dateien zwischen Rechnern unterschiedlicher Type überträgt, kann sich des Eindrucks nicht erwehren, daß die obigen biblischen Verwünschungen im Bereich der EDV noch fortwirken: Häufig sind die transferierten Dateien verstümmelt oder zumindest einzelne Zeichen falsch dargestellt - z.B. die deutschen Umlaute oder das scharfe S. Die Ursache dafür ist meist im unterschiedlichen Zeichenvorrat der verschiedenen beteiligten Rechner bzw. in der unterschiedlichen Codierung dieser Zeichen zu suchen.

In Europa und Amerika verwendet man üblicherweise Zeichensätze, die mit einem Byte (= 8 bit) pro Zeichen auskommen. Man kann daher maximal 2 hoch 8 = 256 verschiedene Zeichen benutzen. Jedem Zeichen wird ein eindeutiger Code zwischen 0 und 255 zugeordnet; eine Tabelle mit solchen Zuordnungen bezeichnet man als Codepage. Leider gibt es in der EDV eine ganze Menge verschiedener Codepages. Die wichtigsten davon werden auf den folgenden Seiten kurz vorgestellt.

Die meisten derzeit verwendeten Rechner - alle IBM PCs und kompatiblen Rechner, Macintosh- und Unix-Rechner sowie alle DEC-Computer - gelten als ASCII-Rechner. ASCII (American Standard Code for Information Interchange) benutzt nur die ersten 7 bits und umfaßt daher 128 Zeichen. Die Zuordnung der Werte von 0 bis 127 ist bei allen ASCII-Rechnern gleich. Allerdings enthält der ASCII-Zeichensatz keine nationalen Sonderzeichen - und wer würde schon im deutschen Sprachraum eine Textverarbeitung ohne Umlaute und scharfes S akzeptieren? Diese Zeichen liegen im Codebereich zwischen 128 und 255, für den etliche in Zeichenvorrat und -belegung völlig unterschiedliche Codepages existieren. Es gibt infolgedessen eine Reihe von Anwendungen (vor allem im Netzwerkbereich - z.B. electronic Mail, NetworkNews), wo man sich auf den ASCII-Zeichensatz beschränken und beispielsweise "ö" von vornherein als "oe" schreiben sollte.

ISO 8859-1

ISO 8859 ist die gültige internationale ISO-Norm für Zeichensätze (ISO = International Standards Organization). Es gibt derzeit 10 Varianten für die folgenden Sprachgebiete:

  • 8859-1: Westeuropa, Lateinamerika
  • 8859-2: Osteuropa
  • 8859-3: Südosteuropa, Malta, Esperanto
  • 8859-4: Skandinavien, Baltikum
  • 8859-5: Kyrillisch
  • 8859-6: Arabisch
  • 8859-7: Griechisch
  • 8859-8: Hebräisch
  • 8859-9: wie 8859-1, jedoch Türkisch statt Isländisch
  • 8859-10: Lappland, Eskimo usw.

Der in unseren Breiten zum Einsatz kommende Zeichensatz ISO 8859-1 ist aus Tabelle 1 ersichtlich. Steuerzeichen - das sind Zeichen, die zur Steuerung des Ausgabegerätes verwendet werden - sind fett und kursiv dargestellt. Die obere Hälfte der Tabelle von 00 bis 7F (die Angabe des Codes ist in allen Tabellen hexadezimal) stimmt mit dem ASCII-Zeichensatz überein. ISO 8859-1 wird auch "Latin 1" genannt und von MS-Windows verwendet; es kann aber auch auf so gut wie allen Unix-Systemen eingesetzt werden.

Tab. 1: Codepage ISO 8859-1 oder "Latin 1"

MS-DOS

Unter MS-DOS gibt es zwei wichtige Codepages: 437 (englisch) und 850 (mehrsprachig), die sich in etwa 40 Zeichen unterscheiden. Die Codepage 437 enthält mehr graphische Zeichen und griechische Buchstaben, die bei der Codepage 850 durch diverse nationale Sonderzeichen europäischer Sprachen ersetzt wurden. Beide Codepages sind in Tabelle 2 dargestellt. Wo es Unterschiede gibt, sind im Kästchen zwei Zeichen vorhanden: Das linke gehört zur Codepage 850, das rechte zur Codepage 437.

In dieser Tabelle kommen keine Steuerzeichen vor. Das heißt nicht, daß die DOS-Codepages von der ASCII-Norm abweichen; vielmehr sind die ersten 32 Zeichen doppelt belegt, und es hängt vom Programm ab, ob diese Codes als Steuerzeichen oder als Graphikzeichen interpretiert werden.

In MS-DOS wird die Codepage meist beim Systemstart mit dem Befehl keyb gesetzt; danach kann sie durch den Befehl chcp geändert werden.

Tab. 2: MS-DOS-Codepage 850 bzw. 437

Andere ASCII-basierte Codepages

Tabelle 3 zeigt die Codebelegung eines Macintosh: Auch hier hält sich die Codepage die ersten 128 Zeichen lang an den ASCII-Standard, die restliche Belegung stimmt jedoch mit keiner der obigen Codepages überein. (Anmerkung: NB steht für "non-breaking blank" und somit für ein geschütztes Leerzeichen; dasselbe gilt für RSP = "required space".) Der DEC Multinational Character Set ist bis auf vier isländische Zeichen mit ISO 8859-1 identisch. Ein weiterer herstellerspezifischer Zeichensatz ist HP Roman8, der anfangs zwar ebenfalls den ASCII-Zeichensatz enthält, aber jenseits von 127 eine komplett andere Codebelegung aufweist.

Tab. 3: Macintosh-Codepage

EBCDIC

IBM-Großrechenanlagen verwenden einen Zeichensatz, der nicht auf ASCII basiert, sondern von der Dezimalarithmetik (BCD = Binary Coded Decimal) abstammt und als EBCDIC (Extended Binary Coded Decimal Interchange Code) bezeichnet wird. Auch hier gibt es wie in der ASCII-Welt zahlreiche Varianten.

Tabelle 4 zeigt die Zeichenbelegung eines IBM 3179 G-Terminals mit deutscher Tastatur. Wieder sind die Steuerzeichen kursiv und fett dargestellt. Andere EBCDIC-Terminals haben oft deutlich andere Zeichensätze. Es ist sogar möglich, in manche Terminals beliebige Zeichensätze zu laden bzw. diese für die entsprechende 3270-Terminalemulation frei zu definieren. Etliche Anwendungen - beispielsweise das Bibliotheksverwaltungssystem BIBOS - machen davon auch Gebrauch. Es gibt natürlich eine Reihe von Zeichen, die sozusagen den "harten Kern" des EBCDIC-Zeichensatzes bilden und die bei so gut wie allen EBCDIC-Geräten gleich sind. Alle Zeichen, die nicht zu diesem harten Kern gehören, sondern unterschiedlich belegt sein können, wurden in Tabelle 4 grau hinterlegt.

Tab. 4: EBCDIC-Codepage

Vorsicht, Falle...

Leider gibt es jedoch selbst bei wichtigen Zeichen noch Unterschiede zwischen der im deutschen Sprachraum üblichen Codebelegung, wie sie in Tabelle 4 dargestellt ist, und der in den Vereinigten Staaten gebräuchlichen Codepage. Die Unterschiede sind in nachfolgenden Tabelle aufgelistet. Je nachdem, ob es sich bei der gewünschten Datei nun um einen deutschen Text oder um ein Programm handelt, muß beim Konvertieren von und nach EBCDIC die entsprechende Codepage ausgewählt werden, damit die Daten richtig dargestellt werden bzw. das Programm korrekt übersetzt werden kann.

Code

deutsch

USA

4F

!

|

5A

Ü

!

7C

§

@

A1

ß

~

C0

ä

[

D0

ü

]

E0

Ö

\


Resümee

Im Bereich der ASCII-Rechner zeigt sich eine starke Tendenz zur Codepage ISO 8859-1: Mit der Ablöse von MS-DOS durch MS-Windows werden wohl auch die zu MS-DOS gehörigen Codepages verschwinden. MS-Windows benutzt ohnehin schon die Codepage ISO 8859-1, und bei Unix-Rechnern ist bereits jetzt ein starker Trend weg von den verschiedenen herstellerabhängigen Codepages und hin zur Codepage ISO 8859-1 erkennbar.

Die EBCDIC-Welt hingegen ist wohl zu betagt und mit zu vielen Altlasten versehen, um sich noch grundlegend verändern zu können - wer mit EBCDIC-Rechnern in Berührung kommt, wird sich mit dem entsprechenden Codepage-Wirrwarr wohl oder übel abfinden müssen.

Als bescheidener Trost für all jene, die die derzeitige Situation unbefriedigend und verwirrend finden, sei auf die lange Liste von Codepages verwiesen, die im letzten Jahrzehnt aus dem Verkehr gezogen wurden bzw. einfach außer Gebrauch gekommen sind. Noch vor zehn Jahren existierte beispielsweise am damaligen Zentralrechner der Universität Wien ein Code (CDC 6/12bit-Code), der für die Darstellung von Großbuchstaben nur 6 Bits, für die Darstellung von Kleinbuchstaben hingegen 12 Bits verwendete.