Problem unterschiedlicher Zeichensätze

Global einsatzbare Software erfordert aufwendige Anpassungen

09.07.1999
Von Rainer Doh* Wer Software auf fremden Märkten verkaufen will, muß auch die entsprechenden Sprachversionen anbieten können. Jenseits der europäischen Buchstabenwelt reichen 256 umfassende Character-Sets dafür nicht mehr aus; an Multibyte-Code-Pages und IME führt dort kein Weg vorbei.

Unter DOS und Windows wird ein Zeichen von einem Byte mit 8 Bit repräsentiert. Daraus ergeben sich die 256 möglichen Zeichen des ANSI-Character-Sets. Alle Zeichen sind als Bit-Folge gespeichert und werden auf Basis der Character-Sets (auch Code-Page) von der Software interpretiert. Leider gibt es aber, vorwiegend aus historischen Gründen, unterschiedliche Code-Pages, also unterschiedliche Zuordnungen von Bit-Folge und Zeichen.

8-Bit-Zeichensätze reichen nur für westliche Sprachen

Es existieren nicht nur Hardware-abhängige Code-Pages, etwa für Windows und Mac, sondern vor allem national verschiedene. Allen Zeichensätzen gemeinsam ist der untere Bereich der Code-Page, der bis zum Wert 127 die nicht landestypischen Groß- und Kleinbuchstaben, sowie Ziffern und Satzzeichen enthält. Der Byte-Bereich 128 bis 255 der Code-Page enthält Umlaute und Sonderzeichen. Mit wenigen Ausnahmen reicht dieser Zeichenvorrat für alle westeuropäischen, lateinisch geschriebenen Sprachen aus.

Schon mit den slawischen Sprachen, wie Polnisch, Tschechisch, Slowakisch, Kroatisch oder Slowenisch verhält es sich anders, auch wenn diese ebenfalls die lateinische Schrift benutzen. Für die Besonderheiten der Zeichensätze ist die Verwendung spezieller Code-Pages (beispielsweise Latin 2) erforderlich, die sich im Bereich 128 bis 255 von Latin 1 unterscheiden.

Die semitischen Sprachen, beispielsweise Arabisch oder Hebräisch, schreiben zwar von rechts nach links, funktionieren jedoch wie die europäischen Buchstabenschriften: Auch sie setzen die Wörter aus einzelnen Buchstaben zusammen. Daß dabei nur die Konsonanten ausgeschrieben werden, während man die Vokale - wenn überhaupt - durch Unter- oder Überstriche und -punktierung auszeichnet, können ein entsprechend angepaßter Zeichensatz und geeignete Fonts bewältigen. Auch bleibt bis zum Ascii-Wert 127 der Grundzeichensatz erhalten. Die restlichen Zeichen von 128 bis 255 decken jedoch alle arabischen oder hebräischen Zeichen ab. Probleme liegen mehr im Detail: So kommen im Arabischen recht häufig englische Ausdrücke vor. Damit hat man in einem Text zwei Schriftrichtungen!

Für die Darstellung der ganzen Vielfalt der chinesischen Schriftzeichen ist ein DV-Zeichensatz, der wie bei uns aus einem Byte besteht, aber bei weitem nicht ausreichend. Die Code-Pages für die asiatischen Sprachen sind daher Double- oder Multibyte-Character-Sets. Jedes Zeichen wird dabei von 2 Byte repräsentiert, mit denen sich dann 256 mal 256, also etwa 65000 Zeichen abdecken lassen. Da auch in asiatischen Sprachen DV-Schlüsselworte wie "Goto" oder "Quit" verfügbar sein müssen, kann man auch mit dem chinesischen Zeichensatz jederzeit einen englischen Text schreiben - die ersten 128 Zeichen entsprechen unseren Code-Pages.

Auf die Verarbeitung von 2-Byte-Zeichen ist westliche Software normalerweise nicht eingerichtet. Für entsprechende Applikationen muß man unter Windows NT oder Windows 95 auf das "Far East Win 32 Software Development Kit" und auf einen entsprechenden Compiler zurückgreifen. Die meisten Applikationen kennen spezielle chinesische oder japanische Multibyte-Versionen, beispielsweise für Windows.

Programmtechnisch sind landesspezifische Anpassungen alles andere als trivial, weil auch die diversen internen und bedienergesteuerten Such-, Vergleichs- oder String-Funktionen umgestellt werden müssen.

Eine Besonderheit stellt Japanisch dar. Es verwendet heute nebeneinander vier Schriftarten: 1850 aus dem Chinesischen übernommene Kanji-Zeichen, die beiden Silben-Alphabete Hiragana und Kataka sowie Romanji für lateinische Buchstaben und Ziffern. Wie läßt sich eine solche Schrift von der Tastatur auf einen Bildschirm bringen? Die Tastatur ist ein Eingabesystem für Buchstaben, Kanji aber bezeichnet Wörter, Hiragana und Kataka Silben. Hier kann sich der europäische Software-Entwickler an einen Standard anlehnen:

IME (Input Method Editor) undIMM (Input Method Manager).

Diese Zusätze zum Windows-Betriebssystem stehen, wenn aktiviert, in allen Programmen automatisch zur Verfügung. IME fängt Tastatureingaben ab, und IMM stellt aufgrund eines Algorithmus fest, ob ein erkennbarer "phonetischer String" vorliegt, also eine dem System bekannte Lautfolge, beispielsweise die japanische Silbe "Ka". Man beginnt mit der Eingabe von "k", der Buchstabe wird als solcher hervorgehoben angezeigt, die Eingabe ist ja noch nicht fertig. Folgt ein "a", ist damit die Silbe fertig, und IME zeigt für diese Lautfolge das passende Hiragana-Schriftzeichen an. Soll statt dessen ein Kanji-Zeichen geschrieben werden, muß der Anwender nur die Leertaste betätigen, IME schlägt dann ein passendes Kanji-Zeichen vor. Freilich gibt es verschiedene Kanji-Zeichen für eine Silbe. Eine erneute Betätigung der Leertaste zeigt ein anderes, möglicherweise passendes, Kanji-Zeichen. Ist auch das nicht das gewünschte, wird nochmal die Leertaste gedrückt, und es öffnet sich eine Listbox mit sämtlichen in Frage kommenden Kanji-Zeichen.

Bei Chinesisch und Koreanisch funktioniert der IME ähnlich. In jedem Fall erhält die Applikation den fertigen Multibyte-Code. Die Probleme der DV mit der thailändischen Sprache liegen etwas anders. Thai verwendet eine Buchstabenschrift, eine große Rolle für die Bedeutung der Wörter spielen aber die gesprochenen fünf verschiedenen Tonhöhen. Sie werden durch Symbole dargestellt, die unter oder über einem Buchstaben stehen. Die Eingabe kann ohne IME über die Tastatur erfolgen. Für die gesamte Kombination eines Thai-Zeichens verwendet man aber einen 3-Byte-Code. Damit muß ein Editor oder eine Textverarbeitung für Thai umgehen können: Heilersofts "High Edit" zum Beispiel löscht bei Betätigung der Entfernen-Taste das ganze Zeichen, durch die Backspace-Taste zuerst das Tonlaut-Zeichen, löst also das zusammengesetzte Zeichen schrittweise auf. Der Cursor bewegt sich immer um ein ganzes Zeichen.

*Rainer Doh arbeitet als freier Autor in Gräfelfing bei München.