claim.gif
Linux Magazin Linux User Easy Linux International Linux Community
Erschienen in EasyLinux 08/2004   »   Ausgabe bestellen

Zeichensatzkodierungen

Babel der Neuzeit

von Andrea Müller


Glaubt man der Bibel, sind die vielen Sprachen das Resultat der Vermessenheit, einen Turm bis in den Himmel bauen zu wollen. Im Computer-Zeitalter schlägt man sich nicht nur mit Verständnisschwierigkeiten herum, auch die Zeichensätze machen Ärger.

"Deine Umlaute sehen irgendwie komisch aus", "Was sind denn das für seltsame Zeichen in der Mail von gestern?", "Hör endlich auf, unkodierte Sonderzeichen ins Netz zu pusten!" -- wer mit solchen, mehr oder minder höflichen Bemerkungen konfrontiert wird, weiß meistens gar nicht, was der Gegenüber eigentlich will. Auf dem eigenen Rechner sind alle Zeichen lesbar. Das Tückische an Zeichensatzproblemen ist, dass sie sich oftmals nur bei der Gegenseite, nicht aber auf dem eigenen Computer zeigen; das ist ebenso wie mit der Sprache: Eine Rede, die Sie in Kalkutta auf Deutsch halten, verstehen Sie selbst mühelos, unter den lauschenden Indern ist vielleicht einer, der ebenfalls Deutsch spricht und versteht, was Sie meinen. Wir erklären, was es mit der Zeichensatzkodierung auf sich hat und mit welcher Sie möglichst wenig anecken.

Zeichensatz-Vielfalt

Der kleinste gemeinsame Nenner bei den Zeichensatzkodierungen ist ASCII, das für American Standard Code for Information Interchange (Amerikanischer Standard-Code für den Informationsaustausch) steht. Diese Kodierung umfasst 128 Zeichen, unter denen sich alle Buchstaben des US-Alphabets in Groß- und Kleinschreibung, Zahlen, Satz- und einige Sonderzeichen befinden. Der Befehl man ascii in einer KDE-Konsole zeigt die passende Manpage mit der kompletten Zeichensatztabelle an (Abbildung 1), das A liegt beispielsweise an Dezimalposition 65 der ASCII-Tabelle und ist damit das 66. Zeichen, da die Zeichensatztabellen beim Zählem mit 0 anfangen.

Abb. 1: Das Kommando "man ascii" zeigt die ASCII-Tabelle mit allen enthaltenen Zeichen.

Für die ASCII-Tabelle kommt ein Code zum Einsatz, der die ersten 7 Bit eines Byte (besteht aus insgesamt 8 Bit) benutzt, die Bitfolge 01000001 in 8-Bit-Notation entspricht dabei dem A. Da die ASCII-Codierung nur 128 Zeichen umfasst, von denen die ersten 32 als Kontrollzeichen, etwa für die Ansteuerung von Druckern, dienen, ist für Umlaute und andere Sonderzeichen kein Platz mehr. Für den praktischen Einsatz eignet sich 7-Bit-ASCII daher nur für Amerikaner, die nicht nur alle Buchstaben und Satzzeichen in ASCII finden, sondern auch ihr Währungszeichen, den Dollar (an Position 36).

Andere Nationen tun sich mit ASCII schwerer: In Deutschland gibt es nicht nur die Umlaute ä, ö und ü, sondern auch noch das ß, ebensolche Probleme haben die Skandinavier mit dem #. Noch schlimmer schaut es in Ländern aus, die keine lateinische Schrift, sondern kyrillische oder gar asiatische Buchstaben verwenden.

Da für den ASCII-Zeichensatz 7 Bit ausreichen, die Bitfolge aller Zeichen also mit einer 0 beginnt, ist jedoch noch ein wenig Platz -- nämlich weitere 128 Zeichen. Diesen Platz nutzen andere Zeichensatztabellen. Bei ihnen wird das 8. Bit für zusätzliche Zeichen mitbenutzt -- die Bitfolgen der Zusatzzeichen beginnen dann immer mit 1. Man spricht daher auch von einem 8-Bit-Code. Alle Zeichen, der ASCII-Tabelle behalten in diesen Zeichensatztabellen ihre Position -- das A liegt immer an Position 65 zwischen dem Ausrufzeichen und dem B. Die zusätzlich dazugewonnenen 128 Positionen bieten Platz für nationale Sonderzeichen. In Westeuropa kommt in den meisten Ländern die ISO-8859-1-Tabelle zum Einsatz, die nicht nur die hier gebräuchlichen Sonderzeichen, sondern auch die skandinavischen, französischen, potugisischen und spanischen enthält. Für ISO-8859-1 gibt es ebenfalls eine Manpage, die der Befehl man iso-8859-1 anzeigt. Im osteuropäischen Spachraum ist dagegen die Zeichensatztabelle ISO-8859-5 die richtige Wahl, in Japan gibt es gleich mehrere Zeichensatztabellen wie ISO-2220-JP oder ISO-2220-JP-2.

Kommt ein weiteres Zeichen hinzu, braucht man eine neue Tabelle. Ein Beispiel dafür ist das Euro-Zeichen, das in ISO-8859-1 nicht enthalten ist. Dafür gibt es inzwischen die Tabelle ISO-8859-15, die neben den in ISO-8859-1 enthaltenen Zeichen zusätzlich das # enthält.

In jeder dieser Zeichensatztabellen liegt an den einzelnen Positionen jeweils ein anderes Zeichen. Damit das im Mail-Verkehr nicht zu heillosem Chaos führt, schreiben Mail-Programme den verwendeten Zeichensatz in den Kopfteil der Nachricht. So sucht sich das Empfangsprogramm die richtige Zeichensatztabelle heraus und schaut dann nach, welcher Buchstabe dort an der angegebenen Position steht. Manche Anwendungen versenden Nachrichten standardmäßig mit dem Zeichensatz, den das Betriebssystem verwendet. Im Mail-Verkehr reicht diese Information aus; geht es um Textdateien von einem System, das mit der kyrillischen Zeichensatztabelle arbeitet, sieht man auf Systemen die ISO-8859-1 nutzen, nur Zeichensalat. Den Zeichensatz im Editor oder systemweit umzustellen, nutzt nur dann etwas, wenn auch die passenden Schriftarten installiert sind, die kyrillische Buchstaben enthalten.

Ausweg UTF-8?

Ein Ausweg aus dem Zeichensatz-Dschungel soll die Unicode-Kodierung UTF-8 sein: Sie enthält nahezu alle weltweit gebräuchlichen Zeichen, von den deutschen Umlauten bis hin zu den unzähligen chinesischen Schriftzeichen. Im Unterschied zu ASCII basiert diese Kodierung nicht auf 7 beziehungsweise 8 Bit, sondern auf 16 Bit. Mit UTF-8 ist es nicht mehr nötig, sich mit Zeichensatztabellen herumzuschlagen: Was der Anwender auf einem UTF-8nutzenden System in China lesen kann, schaut auf einem UTF-8basierten System in Deutschland absolut identisch aus, sofern eine passende Schriftart installiert ist.

Inzwischen verwenden aus diesem Grund sowohl SuSE als auch Red Hat Linux UTF-8 als Systemzeichensatz. Was in der Theorie wie eine perfekte Lösung ausschaut, bereitet in der Praxis derzeit noch Ärger: Wer z. B. ein Update von SuSE Linux 9.0 auf Version 9.1 gemacht hat, erkennt Dateien, die Umlaute im Namen haben, kaum wieder (Abbildung 2).

Abb. 2: Die Umstellung auf UTF-8 unter SuSE Linux 9.1 verstümmelt Dateinamen mit Umlauten, wie "Kassenprüfbericht.doc".

Text- oder HTML-Dateien, die Sie unter Red Hat oder SuSE Linux erstellen, sind von Empfängern, die noch ISO-8859-15 als Systemzeichensatz nutzen, nicht richtig lesbar und verursachen Mehrarbeit, wenn man sie editieren will. Zusätzlich unterstützen noch nicht alle Programme UTF-8. Statt Umlauten stehen dort leere Kästchen in den Menüs, oder der Inhalt von Dialogboxen verschwindet ganz. UTF-8 ist die Zeichensatzkodierung der Zukunft, doch solange noch nicht alle Programme und Systeme damit umgehen können, ist es besser, das System mit der bewährten Standardkodierung ISO-8859-1 oder ISO-8859-15 zu betreiben. Sowohl unter Red Hat Linux 9.0 und dessen Nachfolger Fedora Core als auch unter SuSE Linux 9.1 stellen Sie das schnell ein.

Systemzeichensatz unter SuSE Linux umstellen

Unter SuSE Linux 9.1 ist die Rückkehr zu ISO-8859-15 als Systemzeichensatz denkbar einfach: YaST hält einen entsprechenden Menüpunkt bereit.

  1. Starten Sie über den Menüpunkt System / YaST das Konfigurations-Tool und authentifizieren Sie sich in der nächsten Dialogbox mit dem Root-Passwort als Administrator.
  1. Markieren Sie in der linken Leiste die Kategorie System. Bei der Auswahl in der rechten Fensterhälfte sind Sie beim Modul Sprache wählen an der richtigen Stelle.
  1. Klicken Sie dort auf die Schaltfläche Details, um die Eingabemaske für die Feineinstellungen zu öffnen.
  1. Entfernen Sie das Häkchen vor UTF-8 als Kodierung verwenden und bestätigen Sie die Aktion mit Klick auf OK. Zurück im Sprachauswahlmodul fehlt jetzt nur noch ein Klick auf Übernehmen, damit SuSE Linux die Einstellungen übernimmt.

Weg von UTF-8 unter Red Hat Linux

Red Hat Linux bietet kein so komfortables Frontend, um den gewünschten Systemzeichensatz einzustellen: Nutzer dieser Distribution brauchen für diese Aufgabe einen Text-Editor.

  1. Öffnen Sie über [Alt-F2] ein Schnellstartfenster, in das Sie kdesu kwrite /etc/sysconfig/i18n eingeben. Mit dem Befehl kdesu teilen Sie Linux mit, dass Sie das folgende Kommando mit Administratorrechten ausführen wollen. In der nächsten Dialogbox geben Sie dafür Ihr Root-Passwort ein.
  1. Der Editor kwrite und hat die passende Konfigurationsdatei (/etc/sysconfig/i18n) bereits geöffnet (Das i18n steht dabei für internationalization -- in diesem Wort stehen genau 18 Buchstaben zwischen dem i am Anfang und dem n am Ende)
  1. In der Datei stehen nur drei Zeilen. Anstatt sie zu bearbeiten, setzen Sie vor jede eine Raute (#). Sie dient als Kommentarzeichen, so dass Linux die Zeilen nicht als Konfigurationsanweisungen beachtet.
  1. Tragen Sie nun die folgenden drei Zeilen am Ende der Datei ein:
    LANG="de_DE.ISO-8859-15"
    SUPPORTED="de_DE.UTF-8:de_DE:de"
    SYSFONT="LatArCyrHeb-16"
    Die erste Zeile legt die gewünschte Systemsprache und Zeichensatzkodierung fest, in der zweiten steht, welche Sprachen Ihr System kennt, und die dritte enthält die Standardschrift für den Textmodus.

  1. Sichern Sie die neuen Einstellungen über Datei / Speichern und beenden Sie kwrite.

Damit Ihr System wieder mit der Zeichensatzkodierung ISO-8859-15 arbeitet, melden Sie sich ab und wieder neu an. Zu diesem Zeitpunkt lädt Linux allerdings noch nicht die neue Systemschriftart für die Textkonsole -- das geschieht automatisch beim nächsten Booten. (amü)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2010 Linux New Media AG | Last modified: 2007-01-25 17:16

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]