3. 8-Bit-Codesets

Die meisten Computer-Anwendungen kommen schon seit geraumer Zeit blendend mit 8-Bit-Textdaten zurecht, und die Beschränkung auf 7 Bit scheint daher nicht mehr so ganz zeitgemäß. Allerdings müssen wir uns daran erinnern, dass es für die Interoperabilität entscheidend ist, dass eine eindeutige Konvention für die Zuordnung von nummerischen Codes zu entsprechenden Zeichen gegeben ist. Für die Zeichen 0-127 ist das durch ASCII weitestgehend gewährleistet, von 128-255 existiert keine solche Konvention.

Eine Zeitlang herrschte in diesem Bereich sogar völliges Chaos. Jeder Hersteller benutzte seine eigene Konvention für den 8-Bit-Bereich, meistens sogar mehrere, abhängig davon, für welches Land das jeweilige System hergestellt wurde. IBM beispielsweise belegte den Bereich mit einfachen Grafikzeichen (die sogenenannte PC ruler), um mit Winkeln, Strichen und Kreuzen einfache Tabellen, später sogar einfache Fenstersysteme darstellen zu können, in kleinen Teilbereichen waren länderspezifische Zeichen wie deutsche Umlaute, akzentuierte Buchstaben, skandinavische Zeichen etc. darzustellen. Der Atari war teilweise kompatibel zum IBM-PC, statt der Grafikzeichen wurden jedoch hebräische und griechische Zeichen verwendet, der Macintosh hatte ebenfalls seine eigene Zuordnung, auf HP-Systemen ist noch heute ein Codeset namens HP-Roman8 Standard, ...

Wer früher Texte zwischen Computersystemen austauschte, die nicht in Englisch verfasst waren, war daher daran gewöhnt, dass Texte entweder völlig verhunzt ankamen, oder in einer 7-Bit-Ersatzdarstellung verfasst wurden (z. B. „ae“ statt „ä“, „'e“ statt „é“, „c,“ statt „ç“ und so weiter). Verhunzt heißt nicht, dass die Daten tatsächlich beim Transport beschädigt wurden, lediglich die Zuordnung von Codes zu Zeichen stimmte nicht. Tippte ein Unix-Nutzer beispielsweise ein großes „Ä“ ein, wurde dies als Code Nummer 196 gespeichert, was ein Apple-Macintosh als großes F mit Haken („ƒ“) interpretierte.

3.1. ISO 8859

Die International Standardization Organization ISO versuchte mit der Norm ISO 8859 eine gewisse Ordnung in das Chaos zu bringen. In der Norm sind heute 14 Standard-Codesets definiert.

Alle Codesets der Norm ISO 8559 weisen mehr oder weniger große Überschneidungen auf. Im Bereich 128-159 liegen zusätzliche (nicht druckbare) Steuerzeichen, das Zeichen mit der Nummer 160 ist stets das no-break space, das wir in HTML als   kennen, Nummer 173 ist ein Soft Hyphen - ­ (Ausnahme, das noch nicht offiziell standardisierte, auf TIS-620 basierende ISO-8859-11). Auch andere Latin-1-Sonderzeichen, die in ASCII nicht enthalten sind, wie §, ©, ° liegen oft (aber nicht immer) an der gleichen Stelle.

Nicht alle Codesets sind in der Praxis wirklich relevant. Einige haben sich nur teilweise, einige gar nicht durchgesetzt.

3.1.1. ISO-8859-1 (Latin-1)

Geeignet hauptsächlich für westeuropäische und ähnliche Sprachen, zum Beispiel Afrikaans, Bretonisch, Katalanisch, Walisisch, Dänisch, Deutsch, Englisch, Spanisch, Estnisch, Baskisch, Finnisch, Färöisch (Färingisch), Französisch/Wallonisch, Irisch (Gälisch), Galizisch, Manx, Indonesisch (Bahasa Indonesia) , Isländisch, Italienisch, Eskimoisch (Westgrönländisch/Kalaallisut), Malaysisch, Niederländisch/Flämisch, Norwegisch (Bokmål) und Neunorwegisch (Nynorsk), Okzitanisch (->Frankreich), Portugiesisch, Albanisch, Schwedisch, Tagalog (->Philippinen), Usbekisch und viele mehr.

ISO-8859-1 ist heute ein De-Fakto-Standard für 8-Bit-Textdaten, und wird praktisch von allen Computersystemen unterstützt. Prominente Ausnahme im Unix-Bereich ist Hewlett-Packards HP-UX, das ein eigenes Codeset für westeuropäische Sprachen verwendet, Roman8 oder auch HP-Roman8. Bei den Micros relevant sind noch das MS-DOS-Codeset, das noch immer von DOS-Anwendungen unter MS-Windows verwendet wird (Beweis: DOS-Box öffnen und type umlaute.txt eingeben, wenn umlaute.txt eine Textdatei mit deutschen Umlauten ist). Inwieweit die Macintosh-Codesets auf dem Apple noch aktuell sind, ist nicht bekannt.

3.1.2. ISO-8859-2 (Latin-2)

Geeignet für mittel- und osteuropäische Sprachen mit lateinischen Alphabeten, insbesondere Bosnisch, Tscheschisch, Kroatisch, Ungarisch, Polnisch, Rumänisch, Slowakisch, Slowenisch, Serbisch (mit lateinischen Schriftzeichen), etc.

Auch ISO-8859-2 ist im osteuropäischen Raum (soweit keine kyrillischen Zeichen benutzt werden) weitgehend durchgesetzt. Für deutsche Anwender weist ISO-8859-2 die interessante Eigenschaft auf, dass die deutschen Umlaute und das Eszet nicht nur in ISO-8859-2 vorhanden sind, sondern auch an den gleichen Stellen liegen (also die gleichen nummerischen Codes haben). In der Praxis heißt das, dass man deutsche Texte auch in ISO-8859-2 darstellen kann, und somit in ein und derselben Datei deutsche und z. B. polnische Textpassagen haben kann.

3.1.3. ISO-8859-3

Dieses Codeset ist laut Standard für „südosteuropäische und sonstige Sprachen“ vorgesehen. Mir persönlich ist hier nur Maltesisch bekannt.

3.1.4. ISO-8859-4

Geeignet für skandinavische und baltische Sprachen.

3.1.5. ISO-8859-5

Prinzipiell ist dieses Codest für Bulgarisch, Mazedonisch, Russisch, Serbisch (mit kyrillischen Schriftzeichen), Tadschikisch, Ukrainisch, Weißrussisch, etc. geeignet.

Im osteuropäischen Sprachraum, der kyrillische Schriftzeichen verwendet, steht ISO-8859-2 auf der Bedeutungsskala jedoch nur an dritter Stelle. Den ersten Platz in der Gunst der Anwender dürften sich die KOI8-Codesets und die Codesets der Firma Microsoft teilen (wobei die KOI8-Codesets etwas verbreiteter sein sollten). Beiden Familien von Codesets ist ein eigener Abschnitt gewidmet.

3.1.6. ISO-8859-6

Das Codeset ISO-8859-6 ist für Arabisch stark verbreitet, was allerdings nicht zu der Illusion verleiten sollte, dass sich damit arabischer Text adäquat darstellen ließe. Das arabische Alphabet kennt 28 Buchstaben mit jeweils vier, meist unterschiedlichen Schreibweisen. Hierfür braucht man schon 112 unterschiedliche Codes (die ISO-Codesets haben nur 96 Stellen frei, weil die ersten 32 für Steuerzeichen verwendet werden). Hinzu kommen noch die zehn Ziffern, denn die wirklichen arabischen Ziffern unterscheiden sich in der Darstellung erheblich von unseren „arabischen“ Ziffern:

Die arabischen Ziffern 0-9

Die arabischen Ziffern 0-9

Die Ziffern sind natürlich von rechts nach links zu lesen (die Null ist also der Punkt, und die Neun ist das Zeichen, das unserer Neun sehr ähnlich sieht) und sind durch (arabische) Kommata getrennt. Die Satzzeichen wie Punkt, Komma, Semikolon weichen ebenfalls mehr oder weniger stark von der uns geläufigen Darstellung ab.

Hinzu kommt eine Unzahl von Ligaturen, Buchstabengruppen also, die über- und untereinander und ineinander verwoben dargestellt werden. Diese Ligaturen werden keineswegs nur in kalligraphischen Schriften, sondern durchaus auch im Alltagsgebrauch verwendet. Prominentestes Beispiel ist die Darstellung für Gott „Allah“ als Ligatur („Allah“), die praktisch durchweg in dieser Form geschrieben wird. Die arabische Sprache und Schrift hat für gläubige Muslime eine spirituelle Bedeutung, und somit sind solche Eigenheiten besonders ernst zu nehmen. ISO-8859-6 wird diesen Anforderungen nur begrenzt gerecht.

3.1.7. ISO-8859-7

Dieses Codeset ist Standard für Griechisch.

3.1.8. ISO-8859-8

Dieses Codeset enthält den hebräischen Zeichenvorrat.

3.1.9. ISO-8859-9 (Latin-5)

Latin-5 ist eine Variante von Latin-1 für Türkisch.

3.1.10. ISO-8859-10 (Latin-6)

Geeignet für Lappisch, sowie weitere nordische und Eskimo-Sprachen.

3.1.11. ISO-8859-11

ISO-8859-11 ist zur Zeit noch kein offizieller Standard. Es ist praktisch identisch mit dem Codeset TIS-620 für Thailändisch, enthält aber zusätzlich noch das No-Break-Space (aber kein Soft Hyphen).

3.1.12. ISO-8859-13 (Latin-7)

Mit ISO-8859-13 lassen sich interessanterweise nicht nur die baltischen Sprachen Lettisch und Litauisch, sondern auch Maori darstellen, eine Tatsache die allerdings mehr zum Schmunzeln denn zu sprachwissenschaftlichen Spekulationen anregen sollte.

3.1.13. ISO-8859-14 (Latin-8)

ISO-8859-14 enthält akzentuierte Zeichen für keltische Sprachen.

Hinweis: Irisch (Gaeilge) wird gewöhnlich in ISO-8859-1 bzw. ISO-8859-15 codiert. Die aus dem Mittelalter stammende traditionelle irische Schrift wird auch in Irland selbst mehr und mehr durch eine vom lateinischen Alphabet abgeleitete Schrift verdrängt (s. [Ó Siadhail], S. 9).

3.1.14. ISO-8859-15 (Latin-9)

ISO-8859-15 ist der designierte Nachfolger von ISO-8859-1 (s. Abschnitt 3.1.1, „ISO-8859-1 (Latin-1)“). Es ersetzt einige wenig benutzte Zeichen durch die in Latin-1 „vergessenen“ Zeichen für Französisch und Finnisch, nämlich die O-E-Ligaturen (Œ und œ), das große Y mit Trema (Ÿ), und die Konsonanten S und Z mit Caret (Š, š, Ž und ž). Die praktisch bedeutsamste Änderung ist die Ersetzung des allgemeinen Währungssymbols ¤ (das ohnehin kaum jemand zu deuten weiß) durch das Euro-Symbol €.

3.1.15. ISO-8859-16 (Latin-10)

Dieser Standard ist für „sonstige osteuropäische Sprachen“ vorgesehen. Einziges bekanntes Beispiel ist Rumänisch.

3.2. KOI

Parallel zur Standardisierung im Westen, insbesondere mit ASCII, gab es ähnliche Bemühungen in Osteuropa, insbesondere in der ehemaligen Sowjetunion. Ungefähr zur gleichen Zeit wie die ersten Versionen von ASCII enstanden auch die ersten sowjetischen Codeset-Standards des GOST, des sowjetischen Normungsinstituts. GOST 10859 definierte die 10 Ziffern, 22 Interpunktions- und Sonderzeichen, gefolgt vom russischen Alphabet (nur Großbuchstaben), wiederum gefolgt von den 14 lateinischen Buchstaben ohne (graphische) kyrillische Entsprechung, wiederum gefolgt von weiteren Sonderzeichen und dem Härtezeichen Twjordyj Znak.

Mit GOST 13052 folgte ein volles 7-Bit Codeset, in der unteren Hälfte entsprach es exakt dem ASCII-Codeset (das Dollarzeichen $ war natürlich durch das allgemeine Währungssymbol ¤ ersetzt), in der oberen Hälfte waren für die lateinischen Buchstaben jeweils die kyrillischen Zeichen angeordnet, die lautlich dem lateinischen Pendant am nächsten kamen, wobei allerdings Groß- und Kleinbuchstaben vertauscht waren. Wir erinnern uns kurz zurück an die Zeiten, als die ewigen Weltmeister aus der UdSSR noch die Aufschrift CCCP[1] auf ihren Eishockey-Leibchen trugen. Und kein Reporter verpasste während der Endspielübertragung die Gelegenheit, darauf hinzuweisen, dass diese Buchstabenfolge tatsächlich „SSSR“ bedeutete. Und der hungrige Moskau-Tourist lernte spätestens am zweiten Tag, dass sich in den Häusern mit dem Schild PECTOPAH ein „RESTORAN“ verbarg.

Dieser Kniff hatte im Alltag enorme Vorteile. Schickte ein Hacker aus Moskau seinem ins Silicon Valley geflüchteten Vetter den letzten Absatz aus Tolstois Anna Karenina, so sah das an seinem GOST-13052-Terminal zuhause so aus:

Die letzten Zeilen aus Anna
		Karenina

Die letzten Zeilen aus Anna Karenina (Tolstoi)

Am ASCII-Terminal am anderen Ende der Welt, präsentierte sich dieser Text dann wiederum so:

tAK VE BUDU SERDITXSQ NA iWANA-KU^ERA, TAK VE BUDU SPORITX, BUDU NEKSTATI WYSKAZYWATX SWOI MYSLI, TAK VE BUDET STENA MEVDU SWQTAQ SWQTYH MOEJ DU[I I DRUGIMI, DAVE VENOJ MOEJ, TAK VE BUDU OBWINQTX EE ZA SWOJ STRAH I RASKAIWATXSQ W \TOM, TAK VE BUDU NE PONIMATX RAZUMOM, ZA^EM Q MOLOSX, I BUDU MOLITXSQ, - NO VIZNX MOQ TEPERX, WSQ MOQ VIZNX, NEZAWISIMO OT WSEGO, ^TO MOVET SLU^ITXSQ SO MNOJ, KAVDAQ MINUTA EE - NE TOLXKO NE BESSMYSLENIA, KAKO@ BYLA PREVDE, NO IMEET NESOMNENNYJ SMYSL DOBRA, KOTORYJ Q WLASTEN WLOVITX W NEE!

Er sah eine krude, nach kurzer Übungszeit aber durchaus lesbare Transliteration des russischen Originals. Durch die Vertauschung von Groß- und Kleinbuchstaben war auch sofort erkennbar, welche Text-Teile in der jeweils anderen Sprache geschrieben waren. Antwortete der Vetter mit den neuesten sozialpsychologischen Erkenntnissen aus dem Land der unbegrenzten Möglichkeiten, kamen auch diese Weisheiten wieder lesbar am GOST-Terminal in Moskau an:

Dave Barry, „Sex and the Single Amoeba: What Every
		Teen Should Know“

Left as an exercise to the reader...

Dieses Konzept hatte sich bewährt, und wurde auch im später auf 8 Bit (also 256 Zeichen) erweiterten Standard KOI8-R ([RFC1489]) beibehalten. Die untere Hälfte entsprach jetzt exakt ASCII, in der oberen Hälfte wurden parallel zu den lateinischen Buchstaben die phonetischen Pendants der kyrillischen Schrift gelegt. Der Trick hatte weiter seine Daseinsberechtigung: Viele Mail-Applikationen waren noch immer nicht in der Lage 8-Bit zu übertragen, und setzten das achte Bit einfach auf Null zurück. Technisch gesehen hieß das, dass alle 8-Bit-Zeichen um 128 Plätze nach vorne geschoben wurden. Konnte ein kyrillischer Text also nicht korrekt übertragen werden, wurde er also tatsächlich mit lateinischen Buchstaben transliteriert, und kam noch immer lesbar am Bestimmungsort an.

Leider wurde dieser intelligente Trick von KOI8-R nicht in ISO-8859-5, dem offiziellen Codeset für kyrillische Schrift, übernommen, was dazu führte, dass KOI8-R im russischen Sprachraum noch immer wesentlich verbreiteter ist, als ISO-8859-5. Es gibt auch noch weitere Varianten des KOI-Codesets, insbesondere KOI8-U für Ukrainisch und KOI8-T für Tadschikisch.

3.3. Microsoft

Die Firma Microsoft zeichnet sich traditionell durch eine originelle Auslegung von Normen aus. Die Interpretation von Codesets macht hier keine Ausnahme. Innerhalb der graphischen Oberfläche Windows™ ihres Betriebssystems MS-DOS™ schwenkte sie für den europäischen und amerikanischen Markt scheinbar von den in MS-DOS™ verwendeten IBM-Codesets auf das in der Unix-Welt etablierte ISO-8859-1 um.

Allerdings enthält ISO-8859-1, wie alle Codesets der Familie ISO 8859, eine Lücke, die von Microsoft ausgenutzt wurde. Die Zeichen 128-159 werden in ISO 8859 nicht verwendet. Hintergrund: Geht während der Datenübertragung das achte Bit verloren (in Wirklichkeit gibt es Applikationen, die das absichtlich machen, insbesondere Mail-Server und Mail-Reader), werden die 8-Bit-Zeichen faktisch um 128 Plätze nach vorne geschoben. Aus den Zeichen 128-159 würden dann die Steuerzeichen 0-31, was evtl. zu Problemen führen kann: Wird beispielsweise das 8-Bit-Zeichen mit der Nummer 138 nicht komplett übertragen, käme es beim Empfänger als Zeilenumbruch an, was die Lesbarkeit eines Textes nicht fördert. In pathologischen Fällen könnten auch die Vorder- und Hintergrundfarbe verstellt werden, Fenster auf dem Bildschirm verschoben werden, Pieptöne aus dem Lautsprecher kommen, und so weiter.

Auf Windows-Systemen war dieses Problem wenig relevant, auf Unix-Systemen eigentlich auch, die Problemzone wurde von ISO dennoch freigehalten. Um der Wahrheit die Ehre zu geben: Man muss schon ein ziemlich lausiger Programmierer sein, um eine Anwendung, die Texte verarbeitet, durch solche Control-Codes (also die Zeichen mit der Nummer 0-31) aus der Fassung zu bringen, denn immerhin könnte ein böswilliger Anwender diese bösartigen Steuerzeichen ja auch absichtlich z. B. als Mail verschicken. Die ISO nahm dennoch Rücksicht auf diese fehlerhaften Programme, und einige selbsternannte Gralshüter in der Unix-Welt verteidigen diese Einschränkung noch immer vehement, und verweisen bei den praktischen Erwägungen (es fehlten schlicht und ergreifend wichtige Zeichen in ISO-8859-1) auf das Allheilmittel Unicode. Sie übersehen dabei meist, dass praktisch alle Unicode-Anwendungen (sofern sie UTF-8 verwenden) hemmungslos, sogar in viel höherem Maße, genau diese Problemzone für textuelle Daten verwenden.

3.3.1. CP1252 (Windows-1252)

Was hat Microsoft jetzt genau gemacht? Microsoft benutzt ein gegenüber ISO-8859-1 leicht modifiziertes Codeset namens CP1252 (CP wie CodePage) zur Darstellung westeuropäischer Texte:

CP1252 (Windows-1252)

CP1252 (Windows-1252)

Erläuterung: Die Kästchen in den ersten beiden Reihen (0-31 oder hexadezimal 00-1F) sind die eigentlichen Control-Chars, die zum größten Teil nicht darstellbar sind. Die Control-Chars, die zur Formatierung von Text verwendet werden (Zeilenumbruch, Tabulatoren, Seitenvorschub, ...) sind einfach leer. Die „Problemzone“ erstreckt sich von der 9.-10. Zeile (128-159 bzw. hexadezimal 80-9F). Wie man sieht, wurde sie durchaus sinnvoll gefüllt: Das Euro-Zeichen ist relativ spät dazugekommen, ansonsten finden wir noch die französischen OE-Ligaturen, und Konsonanten mit Caret. „Gänsefüßchen“ in doppelter und einfacher Ausfertigung, Trademark-Zeichen, und das Y mit Trema.

ISO-8859-1 ist absolut identisch mit Windows-1252 (das ist der gängige Alias für CP1252), nur sind eben die Zeichen 128-159 nicht definiert. Davor und dahinter sieht es jedoch völlig gleich aus.

3.3.2. ISO-8859-15 Revisited

Lange Zeit waren die Unterschiede zwischen ISO-8859-1 und Windows-1252 praktisch wenig relevant, schlicht und ergreifend, weil nicht ein Zeichen dabei war, das ohne größere Mausaktionen und Fingerverknotungen überhaupt in einen Text eingegeben werden konnte. Dann kamen die „intelligenten“ Textverarbeitungsprogramme, die z. B. in deutschen Umgebungen mit Heuristiken dafür sorgten, dass die Eingabe "Wörtliche Rede" vom Textverarbeitungsprogramm in „Wörtliche Rede“ gewandelt wurde (man vergleiche die "doppelten Anführungszeichen" mit den „deutschen Gänsefüßchen oben und unten“).

Die von Microsoft zusätzlich definierten Zeichen waren fast alle notwendig, das sah man auch im Unix-Lager ein, und spätestens mit dem Euro bestand akuter Handlungsbedarf, was die fehlenden Zeichen in ISO-8859-1 betraf. Statt aber einfach die Änderungen von Microsoft zu übernehmen (in den meisten Anwendungen hätte nicht eine Zeile Code geändert werden müssen; es hätte lediglich eines systemweiten Updates der Zeichensätze bedurft), entschied man sich aus Halsstarrigkeit, Prinzipienreiterei, Besserwisserei, Trotz oder einem guten Grund, der mir persönlich nicht bekannt ist, dafür stattdessen ein neues Codeset ISO-8859-15 zu definieren:

ISO-8859-15

ISO-8859-15

Na, endlich, der Euro war da (Nummer 164 bzw. Hex A4), auch die meisten anderen zusätzlichen Zeichen aus CP1252 wurden übernommen, aber der Bereich 128-159 wurde weiterhin freigehalten, und stattdessen wurden Zeichen aus ISO-8859-1 ersetzt. In der Theorie hatte das Unix-Lager also z. B. ein Euro-Zeichen, in der Praxis funktioniert es noch heute in den meisten (Unix-)Programmen nicht.

Der Grund dafür ist ganz einfach: ISO-8859-15 ist inkompatibel zu ISO-8859-1, und hat sich deshalb in der Praxis (noch) nicht durchgesetzt. Das wird wohl auch nie passieren, weil ISO-8859-15 auch inkompatibel zu CP1252 ist, und somit der vorher (eigentlich reibungslos funktionierende) Datenaustausch mit der Windows-Welt nicht mehr funktioniert: Vorher sahen Unix-Nutzer da, wo der Windows-Nutzer das Euro-Zeichen eingegeben hatte nur ein Fragezeichen, in die andere Richtung aber - von Unix zu Windows - wurde jedes Zeichen getreu der Intention des Schreibers wiedergegeben. Mit ISO-8859-15 wurde das Problem auf beide Richtungen ausgedehnt: Wo der Unix-Nutzer das neue Y mit Trema eingibt (Nummer 190, Hex BE) sieht der Windows-Nutzer „3/4“, die OE-Ligaturen kommen als „1/4“ bzw. „1/2“ an. Das Euro-Zeichen aus der Unix-Welt mutiert doch wieder zum Currency-Symbol, die Windows-Gänsefüßchen bleiben Unix-Fragezeichen. Und innerhalb der Unix-Welt bestehen prinzipiell die gleichen Probleme, weil sich die Programme lange Zeit uneins bleiben werden, ob sie Zeichen Nummer 164/A4 als Euro- oder Currency-Symbol interpretieren sollen.

Hätte man stattdessen die Microsoft-Erweiterungen zu ISO-8859-1 übernommen, wäre es möglich gewesen, Programme schrittweise auf die neuen Codes umzustellen (sofern das überhaupt notwendig gewesen wäre). Wie reibungslos das gehen könnte, sieht man an der Windows-Welt, in der die Euro-Einführung ohne größere Probleme vonstatten ging. Dass viele Drucker das Euro-Zeichen nicht kannten, führte nicht zu nennenswerten Irritationen, und unter Unix wird das selbst mit ISO-8859-15 noch lange Zeit üblich bleiben, weil es nicht ganz unwahrscheinlich ist, dass Dokumente, die das Euro-Zeichen verwenden, auf einem Windows-System erstellt wurden.

Fazit: Meiner Meinung nach ist ISO-8859-15 kompletter Unfug und landet hoffentlich bald auf dem Schrotthaufen der Computergeschichte.

3.3.3. Andere Sprachen, andere Windows-Codepages

Auch für nicht-westeuropäische Sprachen, die mit 8-Bit-Zeichen auskommen hat Microsoft durchweg eigene Standards definiert, oft nach der gleiche Linie wie bei ISO-8859-1/CP1252. Diese Codesets folgen durchweg dem gleichen Namensschema CPXXXX (X ist eine Ziffer von 0-9). Relativ weit verbreitet ist beispielsweise CP1251, auch als Windows-Cyrillic oder Windows-1251 bekannt. CP1251 ist ein ernsthafter Konkurrent zu KOI8-R, weil die weite Verbreitung der Microsoft-Produkte die Verwendung des Codesets natürlich stark begünstigt. Dennoch ist KOI8-R für Kyrillisch, zumindest im World Wide Web, wohl noch immer erste Wahl.

Alle Windows-Codepages sind inkompatibel zu den entsprechenden Zeichensätzen aus ISO 8859, allerdings sind die spezifischen Kompatibilitäts-Probleme für andere Sprachen weit weniger ausgeprägt. ISO-8859-1 ist ein De-Facto-Standard; die meisten Applikationen gehen bei Text, der nicht ausdrücklich gekennzeichnet ist, davon aus, dass er in ISO-8859-1 bzw. Windows-1252 kodiert ist. Ist dies (ausnahmsweise) nicht der Fall, muss ohnehin eine Zusatzinformation mitgeliefert werden, die das verwendete Codeset spezifiziert. Mit dieser Zusatzinformation wiederum erfordert es aber nicht gerade Hexenwerk, die Texte vor der Darstellung von einem Codeset ins andere zu wandeln. Auch Unix-Applikationen sind in der Regel selbstverständlich in der Lage, in Windows-Zeichensätzen kodierte Dokumente korrekt zu interpretieren. Nur müssen sie dabei natürlich wissen, um welche Windows-Codepage es sich denn dabei handelt.

3.4. Weitere Hersteller

Nicht nur Microsoft benutzt proprietäre Codesets. Hewlett-Packard verwendet für sein Unix noch immer das - zu ISO-8859-1 völlig inkompatible - Codeset HP-Roman8. Der Macintosh scheint mit Max OS X standardmäßig auf ISO-8859-1/CP1252 umgeschwenkt zu sein (erlaubt aber auch noch die alten, proprietären Mac-Codesets), NextStep verwendet eigene Codesets, selbst IBM-Mainframes mit EBCDIC (das noch nicht einmal zu ASCII kompatibel ist) sind noch in Gebrauch. Alle diese Systeme sind allerdings nicht genügend verbreitet, um das Chaos noch nennenswert zu verschlimmern, und alle haben mittlerweile Methoden entwickelt, um den Datentransfer mit dem Rest der Welt über Standard-Codesets zu gewährleisten.

3.5. Weitere Sprachen

Es gibt natürlich noch eine Reihe weiterer Sprachen, die eine überschaubare Anzahl von Schriftzeichen haben, und für die somit eigene ASCII-kompatible 8-Bit-Codesets definiert werden können. Um nicht mit ASCII in Konflikt zu kommen, ist eine Maximalzahl von 128 Zeichen möglich (die ersten 128 sind ja eben von ASCII belegt), aus ISO-8859-Sicht, maximal 96 (32 zusätzliche Control-Codes von 128-159).

Abgesehen von den diversen proprietären Codesets der Firmen Microsoft und Apple für Sprachen, die bereits behandelt wurden, sind noch einige weitere, teilweise durch Wildwuchs entstandene Codesets von Bedeutung.

3.5.1. Georgisch

Georgisch unterscheidet nicht zwischen Groß- und Kleinbuchstaben, und kommt mit 39 neuen Zeichen aus, die in eine ältere Version von CP1252 (ohne Euro, ohne Caret-Konsonanten) eingefügt wurden. Das Codeset ist als Georgian-Academy bekannt, meines Wissens allerdings nicht offiziell registriert.

3.5.2. Vietnamesisch

Vietnamesisch gehört wie Chinesisch, Japanisch, Koreanisch, etc. zu den tonalen Sprachen, Sprachen also, bei denen einsilbige Wortwurzeln (Töne) bedeutungstragend sind. Ursprünglich bediente sich das Vietnamesische der chinesischen Ideogramme. Im 13. Jahrhundert entstand daraus die Nôm-Schrift, die allerdings nur Intellektuellen verständlich war. Im 17. Jahrhundert entwickelten die christlichen Missionare das „Quôc-ngu“ („Landesschrift“), das auf dem lateinischen Alphabet aufbaut, und die Töne durch diakritische Zeichen kennzeichnet. Das Quôc-ngu löste offiziell 1910 die chinesische ideographische Schrift ab.

Vietnamesisch ist damit die einzige tonale Sprache, deren Schrift auf dem lateinischen Alphabet aufbaut (plus zwei spezielle Vokale O-Horn und U-Horn, O und U mit einem kleinen Horn rechts oben; weiterhin ein halbdurchgestrichenes D, das aus dem Polnischen bekannt ist). Es gibt allerdings insgesamt 134 Kombinationen aus diesen Grundbuchstaben und den zur tonalen Kennzeichnung dienenden diakritischen Zeichen, was bedeutet, das die von ASCII nicht definierte obere Hälfte des 8-Bit-Raumes nicht ausreichend für Vietnamesisch ist.

Die drei gebräuchlisten Codesets sind VSCII, VISCII, und VNCII (VPS). VSCII ist ein offizieller Standard, aber VISCII scheint am verbreitetsten zu sein. Alle drei Codesets haben die sechs überzähligen Zeichen im Bereich 0-31 für Control-Codes untergebracht, VSCII sogar deren zwölf, weil es auch Code-Positionen für die isolierten diakritischen Zeichen definiert.

Nach Informationen auf [Standards] sind mindestens sieben weitere Codesets in Verwendung, die allerdings nicht die Verbreitung von VSCII, VISCII und VNCII gefunden haben.



[1] Aufgrund der zahlreichen Anfragen bei Google: Die kyrillische Zeichenfolge CCCP entpricht tatsächlich den Buchstaben SSSR - ein kyrillisches C entspricht also dem deutschen S, und das Pendant des kyrillischen P ist ein deutsches R - und steht für (krude Transliteration) Sojus Sowjetskich Sozialistitscheskich Respublik, also Union der Sozialistischen Sowjet-Republiken - UdSSR, oder englisch Union of Socialist Soviet Republics - USSR. Um gleich weiteren Fragen vorzubeugen: Ein Sowjet ist einfach ein Rat, im Sinne von Beratungsgremium. Die Sowjetunion war also eine Räterepublik. Das russische Wort Sojus (normalerweise Sajuus ausgesprochen, also mit Betonung auf der zweiten langen Silbe, das O der erste Silbe wird zu A) bedeutet Union und war Taufpate für etliche sowjetische Weltraummissionen. Mehr Info? Lernt selber Russisch! Es gibt wohl kaum eine schönere und poetischere Sprache auf diesem Planeten.