In einer Mailliste gab es mal die Frage wie man die polnischen diakritischen Zeichen in für deutsche Sprache konfigurierten Rechnern oder Webseiten verwenden kann. Damit ergeben sich immer wieder mal Probleme. Viele kennen die Zusammenhänge nicht und wissen deshalb bei fehlerhafter Darstellung solcher Zeichen nicht, wie Abhilfe zu schaffen ist. Eigentlich ist das gar nicht so schwer. Man muß nur auseinanderhalten was gerade passiert, denn es gibt mehrere Möglichkeiten Texte zu übertragen und mehrere mögliche Fehlerquellen. Generell können Zeichen als Zeichencodes (Zahl), als benannte Zeichen oder ähnlich wie benannte Zeichen in numerischer Kodierung übertragen werden. Letzteres kann jedoch nicht überall verwendet werden und es sind auch nicht für alle Zeichen benannte Zeichen vorhanden.
Ob und wie das Zeichen beim Empfänger dargestellt wird, hängt dann noch davon ab, welche Schriftart (Font) zur Darstellung des Textes verwendet wird. In Webseiten wird die zu verwendende Schriftart meist deklariert. Der Browser verwendet jedoch eine Ersatzschriftart, wenn in der Webseite keine Schriftart deklariert ist, oder die deklarierte beim Besucher gar nicht installiert ist. Außerdem enthalten nicht alle Schriftarten denselben Zeichenvorrat.
Ich kann hier jedoch keine Hilfestellung zu Einstellungen einzelner Betriebssysteme oder Anwendungen geben. Hier muß der interessierte Leser sich selbst mit der Dokumentation seiner Programme beschäftigen.
Wird ein Text gespeichert oder übertragen, dann wird im Regelfall anstelle der einzelnen Zeichen deren numerischer Codewert (eine Zahl) übertragen, für ein großes A beispielsweise die 65, für das Leerzeichen die 32. Damit daraus beim Empfänger wieder die richtigen Zeichen entstehen können, muß klar sein welcher Zeichensatz dabei zu verwenden ist. Auf einem einzelnen Rechner oder in geschlossenen Systemen, bei denen alle mit der gleichen Software arbeiten, ist das kein Problem. Wenn jedoch nicht bekannt ist womit der Empfänger arbeitet, dann muß der Zeichensatz angegeben werden. Diese Deklaration wird vor dem eigentlichen Text übertragen, gilt in der Regel für den gesamten Text und ist bei Mail, News und Webseiten gleichermaßen nötig. Bei Webseiten wird diese Deklaration vom Browser des Besuchers dann ausgewertet, wenn der Webserver dazu keine Angabe per HTTP-Protokoll übermittelt hat. Es gibt eine Reihe von Zeichensätzen, sowohl mit 8 als auch mit 16 und mehr Bit zur Kodierung eines einzelnen Zeichens.
Mit einem 8-Bit-Zeichensatz lassen sich theoretisch maximal 2^8 = 256 Zeichen kodieren. Von diesen 256 gehen aber noch eine ganze Anzahl für Steuerzeichen wie Zeilenvorschub, Wagenrücklauf, Tabulator usw. ab. Ohnehin lassen sich mit den 256 möglichen Zeichen nicht alle weltweit benötigten Zeichen darstellen, denkt man beispielsweise an manche asiatische Schriften mit ihren Unmengen an Zeichen. Nicht einmal die in Europa verwendeten Sprachen lassen sich mit 256 Zeichen vollständig abbilden. Deshalb gibt es mehrere 8-Bit-Zeichensätze. Die gebräuchlichsten sind ISO-8859-1 bis -15, es gibt aber weitere 8-Bit-Zeichensätze wie Windows-1252. Die ersten 128 Zeichen sind in der ISO-8859-Reihe identisch, sie entsprechen zugleich dem 7-Bit-ASCII-Zeichensatz, der frei von diakritischen Zeichen (Umlaute usw.) ist. Er enthält neben den Steuerzeichen die Buchstaben A bis Z und a bis z, die Ziffern 0 bis 9, die Satzzeichen und die gängigsten Sonderzeichen. In den Zeichen oberhalb 128 sind beim ISO-8859-1 unter anderem die deutschen Umlaute, ß und weitere Sonderzeichen untergebracht. Die anderen ISO-8859 enthalten dort dementsprechend jeweils etwas andere Zeichen. Die polnischen Buchstaben sind im ISO-8859-2 zu finden, der aber ebenfalls die deutschen Umlaute und ß enthält. Deshalb kann man mit ISO-8859-2 Texte schreiben, die sowohl deutsche als auch polnische diakritische Zeichen enthalten. Schreibt man nun einen polnischen Text und läßt sich den dann als ISO-8859-1 anzeigen, dann wird aus dem ł (Code 179) eine hochgestellte 3 (ebenfalls Code 179) usw. Die deutsche Umlaute bleiben dabei sogar erhalten, denn sie liegen in ISO-8859-1 und -2 auf denselben Codes. Die ISO-Zeichensätze kann man sich hier ansehen.
Mit einem 16-Bit-Zeichensatz lassen sich 2^16 = 65536 Zeichen darstellen. Der gebräuchlichste ist UTF-8, der jedoch kein reiner 16-Bit-Zeichensatz ist. Die ersten 128 Zeichen entsprechen auch hier dem ASCII-Zeichensatz und benötigen nur ein Byte (8 Bit). Andere Zeichen belegen im UTF-8 bis zu vier Byte. Mit UTF-8 werden alle in Europa und Amerika verwendeten amtlichen Sprachen abgedeckt. Sein Zeichenvorrat enthält auch einen großen Teil der asiatischen Schriftzeichen, jedoch lassen sich mit den zur Verfügung stehenden 16 Bit nicht alle Zeichen sämtlicher asiatischen Sprachen abdecken. Wäre UTF-8 bereits durchgängig Standard, dann entstünde ein Teil der noch zu beobachtenden Fehler nicht mehr.
Probleme können jetzt dadurch entstehen, daß Sender und Empfänger nicht denselben Zeichensatz verwenden. Ursache ist häufig, daß vom Sender der Zeichensatz nicht deklariert (angegeben) ist und deshalb dem Empfängerprogramm nicht bekannt ist. In Newsgruppen ist beispielsweise Outlook-Express seit jeher dafür bekannt standardmäßig keine Zeichensatzdeklaration mitzuschicken. In solchen Fällen verwendet das Programm des Empfängers den dort eingestellten Default-Zeichensatz, in D eben oft ISO-8859-1 und schon sind die polnischen Buchstaben futsch. Ein weiteres Problem kann sein, daß im Programm des Empfängers die dort eingestellte Schriftart das darzustellende Zeichen gar nicht enthält. An solchen Stellen erscheint dann oft ein Fragezeichen, ein Rechteck, ein Leerzeichen oder das Zeichen wird ganz ausgelassen. Auch in Webseiten ist in der Regel eine Zeichensatzdeklaration nötig. In den Webseiten deutscher Diskussionsforen oder Maillisten ist oft ISO-8859-1 angegeben. Polnische Buchstaben per Zeichencodes werden also in der Webansicht nicht dargestellt, sondern durch die Zeichen auf den gleichen Zeichencodes im ISO-8859-1 ersetzt. Auch bei der Eingabe eines Beitrags auf der Webseite eines Forums muß der Webserver das ggf. als ISO-8859-2 verarbeiten, damit das Ergebnis stimmt, denn auch dabei werden lediglich die Zeichencodes erfaßt. Welche Kodierung eine Webseite hat, kann man in deren Quelltext sehen, der meist mit der rechten Maustaste – Quelltext anzeigen, View Page Source o.ä. angezeigt wird. Dort sollte dann in den ersten Zeilen etwas wie <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
zu finden sein. In manchen Webforen werden nicht im Zeichensatz (z.B. ISO-8859-1) enthaltene Zeichen wie das polnische ł
in numerische Kodierung umgewandelt – siehe folgender Abschnitt. Dabei wird jedoch das Ampersand &
verwendet, das im HTML besondere Bedeutung hat und nochmals umgewandelt wird. Deshalb wird dann statt des ł
die Zeichenfolge ł
dargestellt.
Benannte Zeichen können in Webseiten und in HTML-Mails verwendet werden. HTML-Mails sind solche, die Textformatierungen wie fett, unterstrichen usw. zulassen, aber nicht mit RTF oder ähnlichem arbeiten. In reinen Textmails ist das nicht vorgesehen, sieht man von Tricks wie *Text*
für fetten Text und /Text/
für kursiven Text usw. ab, die nicht alle Programme verarbeiten. Benannte Zeichen beginnen mit dem Zeichen &
(Ampersand, kaufmännisches Und), dem ein Bezeichner folgt und werden mit einem Semikolon ;
abgeschlossen. Ein kleines ä
wird als ä
notiert, ein großes Ü
als Ü
, ß
als ß
usw. Neben einigen Buchstaben gibt es noch eine Anzahl Sonderzeichen als benannte Zeichen, beispielsweise ist —
der lange (Strecken-) Strich — , "
die doppelten Anführungsstriche " und &
das &
. Mithilfe dieser Umschreibungen sind im (Quell-) Text nur noch im ASCII-Zeichensatz enthaltene Zeichencodes unterhalb 128 vorhanden, die immer eindeutig sind. Es gibt aber keine benannten Zeichen für die polnischen diakritischen Zeichen.
Neben den benannten Zeichen gibt es noch die Möglichkeit Zeichen über ihre Codes in dieser Weise zu notieren. Das beginnt wieder mit dem &
gefolgt vom Nummernzeichen #
, dem Zeichencode und wird ebenfalls mit ;
abgeschlossen. So ergibt ł
das gestrichene ł. Auf diese Weise läßt sich jedes beliebige Zeichen darstellen. Eine entsprechende Tabelle ist hier zu finden.
Werden außer dem Zeichenvorrat des ASCII-Zeichensatzes nur benannte oder numerisch kodierte Zeichen in einem Text verwendet, dann kann die Deklaration des Zeichensatzes entfallen. Die Sache hat aber den kleinen Haken, daß für ein einzelnes Zeichen, das nicht zum Zeichenvorrat des ASCII-Zeichensatzes gehört, tatsächlich bis zu acht für die Kodierung anfallen, also eine entsprechend größere Datenmenge übertragen werden muß.
Das größere Problem ist aber, daß unter anderem die Zeichen < > "
und &
im HTML, das &
auch in URLs, besondere Bedeutung haben und deswegen in der Regel nach der Eingabe eines Textes in ein Webformular aus funktionalen bzw. Sicherheitsgründen bei der Verarbeitung durch den Webserver nicht genauso übernommen werden, wie sie eingegeben worden sind. Gibt man beispielsweise ö
ein, dann macht der Webserver daraus &ouml;
weshalb bei der Ausgabe auf der Webseite wieder ö
und nicht etwa ein ö angezeigt wird. Das gleiche kann auch bei der Umwandelung in numerische Kodierung passieren, wie oben bereits beschrieben. Das trifft in der Regel auch für Webmaildienste beim onlinelesen, Webforen usw. zu und zwar meist auch dann, wenn der Text per Mail dorthin gelangt.
Gemischt polnisch-deutsche Texte werden nur dann korrekt verarbeitet und angezeigt, wenn die beteiligten Sendeprogramme und Serversysteme auf einen geeigneten Zeichensatz wie ISO-8859-2 oder besser UTF-8 eingestellt sind, wenn der verwendete Zeichensatz dem Empfänger auch übermittelt wird, wenn die Empfängerprogramme die Zeichensatzdeklaration eingehender Texte korrekt auswerten und wenn die beim Empfänger verwendete Schriftart die benötigten Zeichen auch enthält.
Wer mit Linux arbeitet und die polnischen Zeichen per Tastatur eingeben möchte, kann sich in seinem Benutzerverzeichnis eine Datei .Xmodmap
mit folgendem Inhalt anlegen oder die vorhandene ergänzen oder anpassen:
keycode 0x1A = e E EuroSign EuroSign eogonek Eogonek keycode 0x1D = z Z leftarrow yen zabovedot Zabovedot keycode 0x26 = a A ae AE aogonek Aogonek keycode 0x27 = s S ssharp section hyphen section keycode 0x2E = l L lstroke Lstroke lstroke Lstroke keycode 0x33 = numbersign apostrophe dead_grave dead_breve rightsinglequotemark leftsinglequotemark keycode 0x34 = y Y doublelowquotemark guillemotright doublelowquotemark guillemotright keycode 0x35 = x X leftdoublequotemark guillemotleft leftdoublequotemark guillemotleft keycode 0x3A = m M mu masculine endash emdash keycode 0x3B = comma semicolon horizconnector multiply ellipsis multiply keycode 0x75 = Multi_key
Bei einem sonst deutschen Tastaturlayout bekommt man damit nach xmodmap ~/.Xmodmap
mit AltGr-a das ą und mit AltGr-A das Ą. Sinngemäß werden auch ę, Ę, ł, Ł, ż und Ż erzeugt. Alle sind das Ergebnis der Einträge in den letzten beiden Spalten. Bei einigen Systemen müssen anscheinend statt der beiden letzten Spalten die beiden davor angepaßt werden. Sollte diese Datei nach dem nächsten Start des X-Servers wirkungslos bleiben, dann muß man noch dafür sorgen, daß sie auch jedesmal geladen wird. Das besorgt die oben genannte Zeile, die der ~/.profile
hinzuzufügen ist. Ł und ł lassen zwar standardmäßig bereits mit AltGr-W bzw. AltGr-w erzeugen, was ja nichtmal unlogisch ist, jedoch fand ich, daß die L-Taste intuitiver ist.
Tastencodes der anderen Tasten lassen sich mit xev
oder dem komfortableren xkeycaps
ermitteln, mit dem eine vollständige .Xmodmap
erzeugt werden kann. Benötigt werden aber nur die Zeilen für Tasten, deren Belegung geändert werden soll. Die Tasten- (Symbol-) namen) finden sich in der Datei keysym.h
, die bei meinem System unter /usr/X11R6/include/X11
zu finden ist. Anstelle der Symbolnamen kann auch der Unicode des gewünschten Zeichens in der Form U1E5A
hexadezimal angegeben werden, was ein Ṛ (R mit Punkt darunter) ergibt.
Die ebenfalls im Polnischen verwendeten Buchstaben ń, Ń, ó, Ó, ś, Ś, ź und Ź werden wie üblich mit der Akzent-Taste rechts neben dem ß und anschließendem Drücken der (Shift-) Buchstabentaste erzeugt. Damit das funktioniert darf jedoch keine Tastenbelegung mit Nodeadkeys in den Systemeinstellungen ausgewählt worden sein.
Die übrigen oben gezeigten Zeilen ergeben bei AltGr-y und -x die typographischen Anführungszeichen links „ und rechts “, die eigentlich stets zu verwenden sind. Das linke sieht aus wie eine kleine 99, das rechte wie eine 66. Weil auf einer herkömmlichen Tastatur aber nur das Zeichen " verfügbar ist, wird fälschlich meist dieses Zeichen verwendet. AltGr-Y (AltGr-Shift-y) und -X ergeben die „französischen“ Anführungszeichen links » und rechts «. Der meist als Apostroph verwendete senkrechte Strich ' auf der Taste # ist im Deutschen ebensowenig korrekt wie die auch oft verwendeten Akzentzeichen, die nur auf Buchstaben, nicht auf Leerzeichen gehören. Richtig ist das Zeichen ’, das wie eine kleine 9 aussieht und mit AltGr-# erzeugt wird (Zeile 0x33). Mit AltGr-Shift-# wird das einfache schließende Anführungszeichen erzeugt, das wie eine kleine 6 aussieht, mit AltGr-m der en-lange Gedankenstrich – und mit AltGr-M der em-lange (Strecken-) Strich —. AltGr-, ergibt das Auslassungszeichen … (Ellipse) für das die meisten einfach, aber falsch, drei Punkte schreiben.
Mit AltGr-s wird ein bedingter Trennstrich erzeugt, den man in Webseiten verwenden kann, um dem Brauser an dieser Stelle einen Wortumbruch zu erlauben. Er erscheint nur dann im Schriftbild, wenn ein Wort an dieser Stelle einen Umbruch erhalten soll, und ist sonst nicht sichtbar. Das wird inzwischen von allen aktuellen Brausern beherrscht. Ohne die Verwendung bedingter Trennstriche würde ein Wort immer komplett auf die nächste Zeile wandern, wenn in der Zeile davor der Platz nicht mehr ausreicht. Besonders bei im Blocksatz dargestelltem Text sieht das unschön aus, weil so zwischen den Wörtern größere Zwischenräume entstehen, wenn ein langes Wort am Zeilenende nicht mehr genug Platz hat und deshalb in der folgenden Zeile angeordnet wird.
Die letzte Zeile macht die rechte Windowstaste zur Compose-Taste. Damit lassen sich auch die tschechischen Sonderzeichen erzeugen, beispielsweise das š
, für das nacheinander Compose
<
und das s
zu drücken sind; Compose s <
funktioniert ebenfalls. So ergibt Compose a a
ein å
, Compose A E
ein Æ
, Compose - D
ein Đ
, Compose " y
ein ÿ
, Compose - n
ein ñ
, Compose , c
ein ç
, Compose . i
ein ı
, Compose / o
ein ø
und so weiter. Letzteres erhält man allerdings einfacher mit AltGr-o.
Zum anpassen der Tastaturbelegung unter Windows gibt es unter anderem Keyboard-Layout-Manager und Keyboard-Layout-Editor. Beide lassen in der jeweils 20 € kostenden Vollversion umfangreiche Anpassungen am Tastaturlayout zu und können daraus eine persönliche KBD….DLL erzeugen. Diese Dateien liegen unter Windows XP in der Regel im Verzeichnis %SYSTEMROOT%/system32/, meist ist das C:/Windows/system32/. Die Tastaturbelegung für Deutsch – Deutschland ist beispielsweise in der Datei KBDGR.DLL enthalten. Die Freeware-Version des Keyboard-Layout-Manager habe ich getestet, sie läßt sich intuitiv benutzen. Sie hat allerdings einen eingeschränkten Funktionsumfang, es können unter anderem keine Tastenbelegungen mit AltGr erzeugt werden.
Bei Microsoft gibts den kostenlosen Keyboard-Layout-Creator. Um den benutzen zu können, muß zusätzlich noch das NET-Framework installiert werden. Das habe ich aber alles nicht ausprobiert.
Am leichtesten kommt man wohl mit dem Angebot eines Wikipedia-Autors zum Ziel. Dort gibt es eine ZIP, mit deren Inhalt eine geänderte Tastaturbelegung installiert werden kann. Ich hab’s ausprobiert, es ist ganz einfach.
Im Internet gibt es noch mehrere Webseiten, auf denen beschrieben wird wie man die Tastaturbelegung mithilfe einiger Registry-Einträge ändern kann. Dabei werden die für jede Taste eindeutigen Scan-Codes manipuliert. So lassen sich Tasten ganz abschalten oder man kann ihnen die Funktion einer anderen Taste zuweisen, beispielsweise der vielen lästigen CapsLock-Taste die normale Shift- (Umschalt-) Funktion. Es kann aber nur die Funktionen einer oder mehrerer Tasten insgesamt beeinflußt werden, die gezielte Belegung einzelner Tastenkombinationen wie AltGr+k ist dagegen nicht möglich.