Umlaute und das nur in der deutschen Sprache vorkommene ß-Zeichen sorgen in der IT immer wieder für Probleme. Daher ist die Frage wichtig, welcher Zeichensatz verwendet wird, wenn beispielsweise Zeichen verschiedener Sprachen dargestellt werden sollen.
Vor allem bei Programmen wie OpenStack, die hauptsächlich in Englisch entwickelt werden, sind Hindernisse im wahrsten Sinne des Wortes vorprogrammiert, wenn man darauf angewiesen ist, deutsche Sonderzeichen zu verwenden.
Die Problematik bei OpenStack
Dies passiert beispielsweise wenn man eine Authentifizierung über einen LDAP Server macht, der den deutschen Zeichensatz benutzt.Diese Problemstellung kann dadurch gelöst werden, indem man auf einen Zeichensatz umstellt, der deutsche Zeichen beinhaltet.
Da die Module von OpenStack alle in Python geschrieben wurden, muss man den Standard Zeichensatz von Python ändern.
Python benutzt standardmäßig den ASCII Zeichensatz, welcher für die englische Sprache alle notwendigen Zeichen mitbringt.
Doch um auch deutsche Umlaute und das Eszett-Zeichen zu benutzen, benötigt man einen Zeichensatz welcher diese Zeichen beinhaltet.
ISO 8859-1 oder UTF-8, beinhalten diese Zeichen.
Um dies in Python zu ändern, muss die Datei sitecustomize.py angepasst werden.
Die Standardkodierung wird wie folgt angegeben:
Import sys
sys.setdefaultencoding(‚utf-8‘)
Zeichensätze und Zeichenkodierungen
Wenn man Probleme mit Zeichen hat, wie hier bei der LDAP-Authentifizierung, kann es helfen wenn man den Standard-Zeichensatz ändert.
Definition Zeichensatz
Ein Zeichensatz ist eine Tabelle (Zeichenvorrat) womit der Rechner eine Umwandlung von einem Wert zu einem Zeichen macht.
Benutzt man den falschen Zeichensatz, dann wird der Wert falsch interpretiert und es entsteht ein falsches Zeichen.
Die Begriffe Zeichenvorrat, Zeichensatz und Zeichenkodierung
Um nun das Problem der falschen Zeichen zu erläutern, sind ein paar Begriffserklärungen notwendig:
- Zeichenvorrat beschreibt die Menge der Zeichen, die man zur Verfügung hat oder verwenden möchte.
- Ordnet man den Zeichenvorrat, bringt man die Zeichen also in eine bestimmte Reihenfolge und nummeriert sie durch, bekommt man einen Zeichensatz (engl. kurz charset).
- Damit der Computer mit den Zeichen noch arbeiten kann, muss er das Muster in Bits kennen. Dafür ist die Zeichenkodierung zuständig. Da im Zeichensatz bereits eine Reihenfolge und Nummerierung festgelegt wurde, braucht dieser also nur noch die Bitmuster zuzuordnen werden.
Die wichtigsten Zeichensätze und -kodierungen
In Westeuropa wird der Zeichensatz ISO 8859-1 (auch „Latin 1“ genannt) genutzt. Dieser Zeichensatz enthält die grundlegenden ASCII-Zeichen, der auch die fürs Deutsche wichtige Umlaute umfasst; also ä, ö, ü, Ä, Ö, Ü und ß. Somit kommt man bei deutschen Texten mit diesem Zeichensatz eigentlich aus. Frickelig wird es wenn gleichzeitig Zeichen einer anderen Sprache oder eines anderen Zeichensystems verwendet werden. Dann reicht dieser Zeichensatz nicht mehr aus.
Dafür wurde der Unicode entwickelt, der mit derzeit 220+216 möglichen Zeichen langfristig jedes sinntragende Zeichen beziehungsweise Textelement aller bekannten Schriftkulturen und Zeichensysteme umfassen soll.
Die gebräuchlichste Kodierung für Unicode-Daten ist UTF-8, bei der ein geschickter Trick angewandt wird: denn reicht ein Byte zur Abbildung des Zeichens nicht aus, wird einfach ein zweites Byte dazu genommen. Reicht auch das nicht aus, wird ein weiteres Byte dazu genommen und so weiter.
Damit nun der Rechner weiß, wie er die Daten richtig verarbeiten kann, muss man Ihm mitteilen, welchen Zeichensatz er benutzen soll. Fehlt ihm diese Information dann kommt es zu Fehlinterpretationen, welche z.B. bei einer Authentifizierung zu Fehlern führt.