Die beiden Grundeinheiten in jedem heutigen Computer sind die Einheiten Bit und Byte. Ein Byte ist bei den heute üblichen Systemen als Folge von 8 Bit definiert (man spricht auch von Octets). Da jedes Bit zwei Zustände haben kann, nämlich 0 oder 1 bzw. ja oder nein, lassen sich mit einer Folge von 8 Bit genau 256 (= 28) unterschiedliche Zustände realisieren. Ein Byte kann also 256 unterschiedliche Werte haben. Da im Computer immer auch die 0 dazugehört, können in einem Byte dezimal ausgedrückt Werte zwischen 0 und 255 stehen.
Wenn ein laufendes Programm im Computer eine Datei zeichenweise in den Arbeitsspeicher einliest, stehen im Arbeitsspeicher anschließend nur Byte-Werte. Von Zeichen unseres Alphabets ist auf dieser Ebene noch keine Rede. Damit aus den Byte-Werten lesbare Zeichen werden, die sich am Bildschirm darstellen lassen, braucht es eine Konvention, die festlegt, welcher Byte-Wert als welches Zeichen dargestellt werden soll. Diese Aufgabe haben die so genannten Zeichensätze. Zeichensätze sind Tabellen, die einem Byte-Wert ein Zeichen zuordnen, das in unseren Schriftkulturen eine Bedeutung hat.
Die Zeichensätze sind EDV-historisch gewachsene Gebilde. Bis zum Aufkommen der Personal Computer benutzten viele Rechner noch 7 Bit lange Grundeinheiten, mit denen sich nur 128 unterschiedliche Zustände darstellen lassen. Noch früher waren es auch mal 6 und 5 Bit lange Grundeinheiten. Auf der 7 Bit langen Grundeinheit beruhten die ersten Zeichensätze, die historisch den Durchbruch schafften: der ASCII-Zeichensatz (American Standard Code for Information Interchange) und der EBCDIC-Zeichensatz (Extended Binary Coded Decimal Interchange Code). Dabei setzte sich vor allem der ASCII-Zeichensatz durch, weil er im erfolgreichen Unix-Betriebssystem und in den aufkommenden Personal Computern zum Einsatz kam.
Beim ASCII-Zeichensatz sind die ersten 32 Zeichen für Steuerzeichen reserviert, etwa für Tastatur-Impulse wie Zeilenumbruch. Die Zeichen zwischen 32 und 127 sind darstellbare Zeichen, darunter alle Ziffern, Satzzeichen und Buchstaben, die ein Amerikaner so braucht (denn der ASCII-Zeichensatz kommt natürlich aus den USA).
Lange Zeit war ASCII der einzige verbreitete Standard. Da die neueren Computer aber 8 Bit lange Grundeinheiten hatten, war es folgerichtig, für die Werte zwischen 128 und 255 neue Verwendungszwecke zu finden. Dabei entwickelten sich jedoch proprietäre Lösungen. Microsoft DOS beispielsweise benutzt einen "erweiterten ASCII-Zeichensatz", der aber nicht viel mehr ist als eine schöne Umschreibung für die Microsoft-eigene Belegung der Zeichen 128 bis 255 speziell für die Bedürfnisse von MS DOS.
Um auch hierfür einen Standard zu schaffen, ersann die amerikanische Standardisierungs-Organisation den ANSI-Zeichensatz. Dieser Zeichensatz übernimmt für die Zeichen 0 bis 127 den ASCII-Zeichensatz und definiert für die Werte zwischen 128 und 255 etliche Sonderzeichen, darunter wichtige Alphabetzeichen verbreiteter Sprachen, etwa deutsche Umlaute, französische Accent-Zeichen oder spanische Zeichen mit Tilde. Dazu kamen diverse verbreitete kaufmännisch-/wissenschaftliche Zeichen.
Um auch hierfür einen Standard zu schaffen, entwickelte die internationale Standardisierungs-Organisation ISO eine Reihe von Zeichensätzen, die sogenannte ISO-8859-Familie. Diese Zeichensätze übernehmen für die Zeichen 0 bis 127 den ASCII-Zeichensatz und definieren für die Werte zwischen 128 und 255 etliche Sonderzeichen und wichtige Alphabetzeichen verschiedener europäischer Sprachen. Der in Mitteleuropa verbreitete Zeichensatz ISO 8859-1 enthält etwa die deutschen Umlaute, französische Accent-Zeichen und spanische Zeichen mit Tilde. Dazu kommen diverse verbreitete kaufmännische und wissenschaftliche Zeichen.
Ein Beispiel soll das Prinzip der Zeichensätze verdeutlichen. Die folgende Abbildung zeigt zwei Zeichensätze: den MS-DOS-Zeichensatz, genannt Codepage 850, und den Windows-Zeichensatz für westeuropäische Systeme, genannt Windows 1252.
Der Abbildung können Sie entnehmen, dass die oberen Teile (dunkler) beider Zeichensätze identisch sind, da beide Zeichensätze den ASCII-Zeichensatz für die ersten 128 Zeichen übernehmen (die ersten 32 Zeichen fehlen in der Abbildung, da es sich bei diesen Zeichen um Steuerzeichen handelt, die nicht abbildbar sind). Die unteren Teile (heller) sind dagegen unterschiedlich. Wo im Windows-Zeichensatz beispielsweise ein kleines deutsches ü
liegt, bietet der erweiterte DOS-Zeichensatz eine hochgestellte ³
an.
Wenn Sie mit Microsoft Windows arbeiten, können Sie das selbst ausprobieren: Erzeugen Sie mit einem Texteditor, z.B. Notepad, eine neue Datei und tippen Sie Umlaute wie "äääöööüüü" ein. Falls Sie Windows 2000 oder XP verwenden, wählen Sie beim Speichern unter "Codierung" den Wert "ANSI" (dies ist die Microsoft-Bezeichnung für den besagten Windows-Zeichensatz). Anschließend rufen Sie die DOS-Eingabeaufforderung über das Startmenü auf ("Eingabeaufforderung" unter Windows 2000 und XP) und geben edit ein. Daraufhin öffnet sich der DOS-Texteditor. Damit öffnen Sie die zuvor im Notepad abgespeicherte Datei. Nun können Sie sehen, was der Zusammenhang zwischen Byte und Zeichensatz ist: Es werden zwar genauso viele Zeichen wie im Notepad angezeigt, aber es sind andere Zeichen. Der Grund ist, dass im Arbeitsspeicher und auf der Festplatte immer nur Byte-Werte stehen. Was ein Programm daraus macht, hängt davon ab, welchen Zeichensatz es benutzt.
Das Beispiel zwischen dem DOS- und dem Windows-Zeichensatz wurde hier bewusst ausgewählt, da es sich an ein und demselben Rechner testen lässt. Das Beispiel soll aber vor allem auch dazu ermuntern, tiefer in die Geheimnisse der Zeichensätze einzusteigen und sich darüber bewusst zu werden, dass nichts von dem, was im Anzeigefenster eines Web-Browsers zu sehen ist, selbstverständlich ist, sondern dass alles auf Konventionen beruht, die computer-technisch gesehen zum Teil auf wesentlich tieferen Ebenen aufsetzen als HTML und andere standardisierte Web-Sprachen.
Zeichensätze decken einzelne Schriftkulturen und damit verbundene Sprachen oder Sprachfamilien ab. Problematisch wird es, wenn mehrsprachige Dokumente erstellt werden sollen, die Schriften ganz unterschiedlicher Zeichensätze enthalten. Auch für nicht-alphabetische Schriftkulturen sind Zeichensätze ungeeignet. In unseren Zeiten der Globalisierung wird es jedoch immer wichtiger, für solche Probleme eine standardisierte EDV-technische Lösung zu finden, die sich auf den verschiedensten Computersystemen durchsetzt. Eine solche Lösung gibt es auch schon: das Unicode-System. Unicode soll mittelfristig die auf 256 Zeichen begrenzten Zeichensätze ablösen. Derzeit geschieht auch schon viel in dieser Richtung. Neuere Betriebssysteme bieten Schriftarten an, die den kompletten Unicode-Zeichenvorrat oder zumindest große Teile davon abdecken. Auch die meisten modernen Anwendungen können Texte mit dem Unicode-Zeichensatz UTF-8 speichern, wodurch ein Zeichen nicht mehr zwangsläufig genau einem Byte entspricht, sondern aus mehreren Bytes bestehen kann. Damit ist die Grundlage zur Unterstützung des Unicode-Systems gegeben.
Schriftarten sind Beschreibungsmodelle, um auf Ausgabemedien wie Bildschirm oder Drucker Zeichen abzubilden. Jedes heute übliche Betriebssystem enthält so genannte Systemschriften. Das sind Schriftarten, die auf jeden Fall genau die Zeichen enthalten, die in dem Zeichensatz definiert sind, auf dem das Betriebssystem per Voreinstellung basiert. Unter MS Windows gibt es beispielsweise eine solche Schriftart namens System. Daneben gibt es auf modernen Rechnern definierte Schnittstellen für beliebige Schriftarten. Verbreitet ist z.B. die Adobe-Schnittstelle für Schriftarten (PostScript). Unter MS Windows kommt eine eigene Schnittstelle hinzu (TrueType).
Solche Schriftarten können auf die zur Verfügung stehenden Byte-Werte beliebige Darstellungsmuster legen. So gibt es auch Schriftarten wie WingDings oder ZapfDingbats, die fast nur Symbole und Icons enthalten. Wichtig sind jedoch vor allem auch Schriftarten, die zwar ansprechend aussehen, aber gleichzeitig einen bestimmten Zeichensatz unterstützen, d.h. alle Zeichen dieses Zeichensatzes darstellen, und zwar genau auf den Byte-Werten, die im Zeichensatz dafür vorgesehen sind. Nur durch solche Schriftarten wird es möglich, festgelegte Zeichensätze in eine grafisch darstellbare Form zu bringen. Die folgende Abbildung zeigt ein Beispiel für diesen Zusammenhang:
Bei modernen Schriftarten, die das ganze Unicode-System abdecken, ist das Prinzip das gleiche. Nur mit dem Unterschied, dass dort nicht nur 256 Zeichen adressiert werden können, sondern derzeit bis zu 65536 Zeichen, künftig noch viel mehr, aus dem Grund, weil dort zwei oder gar vier Bytes für Zeichenwerte verwendet werden, wodurch viel höhere Werte als 256 möglich sind.
Da die Computerindustrie historisch gesehen in den USA und Europa entstand, bauen die heutigen Hardware-Systeme und Betriebssysteme auf Prinzipien auf, die zunächst als selbstverständlich galten. Wenn Sie in einem Textverarbeitungsprogramm einen Text tippen, wandert der Cursor beim Schreiben von links nach rechts. Automatische Zeilenumbrüche erfolgen nach typischen Begrenzerzeichen westlicher Sprachen wie Leerzeichen oder Silbentrennstrich.
Es gibt jedoch etliche Schriftkulturen, die eine andere Schreibrichtung als die unsrige haben. Dazu gehören etwa die arabische Schrift, die hebräische Schrift oder die fernöstlichen Schriftkulturen. Um solche Schriftkulturen auf Computern abzubilden, sind zusätzliche Fähigkeiten der Software erforderlich. Denn es gilt nicht nur, die Schriftelemente abzubilden, sondern auch die Editierrichtung bei der Texteingabe und die Ausgaberichtung auf Medien wie Bildschirm oder Drucker an die Schreibrichtung der entsprechenden Schriftkultur anzupassen.
In HTML gibt es deswegen Sprachbestandteile wie das Universalattribut dir
oder das Element bdo
, mit deren Hilfe Web-Autoren Angaben zur Schreibrichtung machen können. Die software-seitige Umsetzung "on the fly" ohne das Erfordernis, zusätzliche Spezialsoftware installieren zu müssen, funktioniert bei neueren Browsern auch schon zum Teil.
Zeichensätze (ISO-8859-Familie und andere) | |
Modul CGI: Funktionen für die CGI-Programmierung | |
SELFHTML/Navigationshilfen Internationalisierung |
© 2005 Impressum