Computer und Zeichenkodierung

Zum Verständnis von Zeichensätzen, Unicode, UTF-8 und verwandten Themen ist es hilfreich, sich die Stationen bewusst zu machen, die ein Schriftzeichen von seiner Repräsentation auf einem Datenträger bis hin zum Ausgabegerät durchläuft.

Bits, Bytes und Zeichen

Die beiden Grundeinheiten in jedem heutigen Computer sind die Einheiten Bit und Byte. Ein Byte ist als Folge von 8 Bit definiert (man spricht auch von Octets). Da jedes Bit zwei Zustände haben kann, nämlich 0 oder 1, 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 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, welches Zeichen mit welchem oder welchen Byte-Werten gespeichert wird. Diese Aufgabe haben die so genannten Zeichenkodierungen. Eine solche Zeichenkodierung greift auf eine Übersetzungstabelle (Codetabelle) zurück, die zunächst jedem Zeichen, das verwendet werden kann, eine fortlaufende Nummer (einen Code) zuweist. Die Menge der Zeichen in einer solchen Tabelle wird Zeichenvorrat genannt.

Die Kodierungen sowie deren Codetabellen 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 Kodierungen, die historisch den Durchbruch schafften: die ASCII-Kodierung (American Standard Code for Information Interchange) und die EBCDIC-Kodierung (Extended Binary Coded Decimal Interchange Code). Dabei setzte sich vor allem die ASCII-Kodierung durch, weil sie im erfolgreichen Unix-Betriebssystem und in den aufkommenden Personal Computern zum Einsatz kam.

In der ASCII-Codetabelle sind die ersten 32 Zeichen für Steuerzeichen reserviert, etwa für Tastatur-Impulse wie den Zeilenumbruch. Die Zeichen zwischen 32 und 127 sind darstellbare Zeichen, darunter alle Ziffern, Satzzeichen und Buchstaben, die ein Amerikaner so braucht (denn die ASCII-Kodierung kommt natürlich aus den USA). Das Umwandeln der Zeichen in Einsen und Nullen, also die eigentliche Kodierung, funktionierte einfach: Jedes Zeichen nahm bei der Speicherung genau 7 Bits in Anspruch und der binäre Zahlenwert dieser 7 Bits entsprach der Nummer des Zeichens in der ASCII-Codetabelle. Der lateinische Buchstabe "a"; beispielsweise hat in der ASCII-Codetabelle den dezimalen Wert 97, er wurde daher ASCII-kodiert als 1100001 gespeichert.

Lange Zeit war ASCII der einzige verbreitete Standard. Da die neueren Computer aber 8 Bit lange Grundeinheiten hatten, war es folgerichtig, für die Byte-Werte zwischen 128 und 255 neue Verwendungszwecke zu finden. Dabei entwickelten sich jedoch proprietäre Lösungen. Microsoft DOS beispielsweise benutzt eine "erweiterte" ASCII-Codetabelle - dies ist aber nicht viel mehr 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, entwickelte die internationale Standardisierungs-Organisation ISO eine Reihe von Kodierungen, die sogenannte ISO-8859-Familie. Die Codetabellen dieser Kodierungen übernehmen für die Zeichen 0 bis 127 die ASCII-Codetabelle und definieren für die Werte zwischen 128 und 255 etliche Sonderzeichen und wichtige Alphabetzeichen verschiedener europäischer Sprachen. Die in Mitteleuropa verbreitete Kodierung ISO 8859-1, auch Latin-1 genannt, enthält etwa die deutschen Umlaute, französische Accent-Zeichen und spanische Zeichen mit Tilde. Dazu kommen diverse verbreitete kaufmännische und wissenschaftliche Zeichen.

In der Fachliteratur ist häufig auch von Zeichensatz (englisch character set) die Rede, um sowohl die Zeichenkodierung, die Zuordnungstabelle zwischen Zeichen und Zeichencode, als auch den Zeichenvorrat zu bezeichnen.

Die Grenzen von Bytes sprengen

Die ISO-Kodierungen und deren Abwandlungen wie etwa Microsoft 1252, die mit einem Zeichenvorrat von 256 Zeichen arbeiten und jedes Zeichen mit genau einem Byte speichern, können nur einzelne alphabetische Schriftkulturen und die Zeichen damit verbundener Sprachen abdecken. Problematisch wird es, wenn mehrsprachige Dokumente erstellt werden sollen, die Zeichen ganz unterschiedlicher Schriftkulturen enthalten oder von bestimmten Sonderzeichen Gebrauch machen. Auch für nicht-alphabetische Schriftkulturen sind Kodierungen mit einem derart eingeschränkten Zeichenvorrat ungeeignet. In Zeiten der Globalisierung wurde es daher immer wichtiger, für solche Probleme eine standardisierte EDV-technische Lösung zu finden. Eine solche Lösung ist das Unicode-System und seine Kodierungen.

Die Bedeutung der Schriftarten

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 der Codetabelle 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 aber vor allem Schriftarten, die einerseits ansprechend aussehen, andererseits eine bestimmte Codetabelle unterstützen, d.h. alle Zeichen dieses Zeichenvorrats darstellen, und zwar genau auf den Byte-Werten, die in der Codetabelle dafür vorgesehen sind. Nur durch solche Schriftarten wird es möglich, bestimmte Zeichenvorräte in eine grafisch darstellbare Form zu bringen. Die folgende Abbildung zeigt ein Beispiel für diesen Zusammenhang:

wert-kodierung-schriftart.gif
Zeichenwert, Zeichenkodierung und Schriftart

Neuere Betriebssysteme bieten auch Schriftarten an, die den kompletten Unicode-Zeichenvorrat oder zumindest große Teile davon abdecken. Viele neuere Anwendungen können Texte auch mit der Unicode-Kodierung UTF-8 speichern, wodurch ein Zeichen nicht mehr zwangsläufig genau einem Byte entspricht, sondern aus mehreren Bytes bestehen kann.

Schriftkulturen mit anderer Schreibrichtung

Da die Computerindustrie historisch gesehen in den USA und Europa entstand, bauten die 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 viele Schriftkulturen, die eine andere Schreibrichtung 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 Elemente und Attribute, über die sich die Schreibrichtung festlegen lässt. Die software-seitige Umsetzung funktioniert bei neueren Browsern mittlerweile recht ordentlich.

 


Korrekturen, Hinweise und Ergänzungen
Bitte scheut euch nicht und meldet, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Diskutieren wählen. Es ist keine Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden allerdings kommentarlos entfernt.

Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License