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 Oktetts). 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 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 98, er wurde daher ASCII-kodiert als 1100010 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 wird oft der Begriff "Zeichensatz" (englisch character set) benutzt, um sowohl Zeichenkodierung (engl. character encoding), die Zuordnungstabelle zwischen Zeichen und Zeichencode (engl. character code), als auch den Zeichenvorrat (engl. character repertoire) zu bezeichnen. Tats�chlich sind diese drei Konzepte notwendigerweise miteinander verbunden: Beispielsweise ISO 8859-1 benutzt einen Zeichenvorrat von 256 Zeichen (darunter a, b, c usw.). Diesen Zeichen werden jeweils in der zugeh�rigen Codetabelle Nummern zugeordnet (a = 97, b = 98, c = 99 usw.). Die Kodierung k�mmert sich dann um die Speicherung dieser Nummern in Bytes (97 = 01100001, 98 = 01100010, 99 = 01100011 usw.).
Dennoch erleichtert eine begriffliche Unterscheidung das Verst�ndnis, weshalb die Bezeichnung "Zeichensatz" in SELFHTML vermieden wird. Die von ISO 8859-1 verwendete Codetabelle entspricht beispielsweise dem Anfang der von UTF-8 verwendeten Codetabelle (siehe Die Grenzen von Bytes sprengen). Das Zeichen "�" hat in ISO 8859-1 daher denselben numerischen Wert wie in UTF-8, n�mlich 228. Trotzdem benutzen beide Kodierungen einen unterschiedlichen Zeichenvorrat. ISO 8859-1 kann 256 verschiedene Zeichen speichern, UTF-8 kann hingegen �ber eine Millionen Zeichen des Unicode-Standards speichern. Die Umsetzung des Zeichens "�" mit der Nummer 228 erfolgt daher anders: ISO 8859-1 speichert "�" als ein Byte mit dem Wert 228, UTF-8 als eine Kette von zwei zusammengeh�rigen Bytes mit den Werten 195 und 164.
Obwohl der Begriff "Zeichensatz" in der Kritik steht, wird die Angabe zur Zeichenkodierung in verschiedenen Formaten und Protokollen, darunter HTTP, unter dem Namen charset (Abk�rzung f�r character set) mitgesendet. Seien Sie sich also dar�ber bewusst, dass mit "Zeichensatz" eine Kodierung gemeint sein kann, aber auch vereinzelt ein Zeichenvorrat mit einer entsprechenden Codetabelle unabh�ngig von der letztlichen Kodierung.
Ein Beispiel soll das Prinzip der Zeichenkodierungen verdeutlichen. Die folgende Abbildung zeigt zwei Codetabellen: Die Codetabelle der MS-DOS-Kodierung, genannt Codepage 850, und die Codetabelle der Windows-Kodierung f�r westeurop�ische Systeme, genannt Windows 1252. Bei beiden Kodierungen entspricht ein Zeichen bei der Speicherung genau einem Byte. Somit ist der Zeichenvorrat, das hei�t der Umfang der folgenden Codetabellen, auf 256 Zeichen begrenzt.
Der Abbildung k�nnen Sie entnehmen, dass die oberen Teile (dunkler) beider Codetabellen identisch sind, da beide die ASCII-Codetabelle 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 in der Windows-Codetabelle beispielsweise ein kleines deutsches �
liegt, bietet die DOS-Codetabelle 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 die besagte Windows-Kodierung). 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 Kodierung 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, welche Kodierung es benutzt.
Das Beispiel zwischen der DOS- und der Windows-Kodierung 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 Kodierungen 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.
Die verbreiteten ISO-Kodierungen deren Abwandlungen wie Microsoft 1252, die mit einem Zeichenvorrat von 256 Zeichen arbeiten und jedes Zeichen mit genau einem Byte speichern, k�nnen nur einzelne Schriftkulturen und die damit verbundenen Sprachen oder Sprachfamilien abdecken. Problematisch wird es daher, 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 unseren Zeiten der Globalisierung wird es daher 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 und deren Kodierungen. Die Unicode-Kodierungen haben das Potenzial, mittelfristig die auf 256 Zeichen begrenzten Kodierungen abzul�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 der Unicode-Kodierung 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 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 jedoch vor allem auch Schriftarten, die zwar ansprechend aussehen, aber gleichzeitig 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:
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.
![]() | |
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
© 2007 Impressum