Java und die Speicherung von Unicode

Der Datentyp char ist unter Java 16 Bit, also zwei Byte groß. Laut dem Buch Java ist auch eine Insel, werden die Daten in 16-Bit-Unicode gespeichert. Doch was genau bedeutet das und ist das eine korrekte Aussage? Die grundlegende Aussage, dass ein char unter Java ein 16-Bit-Unicode Zeichen ist, stimmt. Wobei mittlerweile wird das ganze so betrachtet, dass ein char unter Java eine Unicode code unit repräsentiert. Echte Unicode-Zeichen benötigen mittlerweile bis zu 21 Bit und werden üblicherweise als 32 Bit gespeichert, was einer UCS-4 Kodierung entspricht.

Mit Unicode können nicht nur lateinische Buchstaben abgebildet werden

Mit Unicode können nicht nur lateinische Buchstaben abgebildet werden

Das bedeutet, dass in einem char nur Unicode-Zeichen gespeichert werden können, die in 16 Bit abgebildet werden können. Bei einem Array vom Typ char, einem StringBuffer und einem String sieht die Sache anders aus. Hier sind die Unicode-Zeichen in UTF-16 kodiert, damit können alle Zeichen des Unicode-Satzes kodiert werden. Das führt aber auch zu Problemen, so gibt die Methode length() einer String-Instanz die Anzahl der Unicode code units zurück, was gleichbedeutend ist mit der Anzahl Byte multipliziert mit zwei ergibt. Es bedeutet das die Methode nicht zwingend die Anzahl der Buchstaben zurück gibt, da manche Buchstaben mit zwei Unicode code units kodiert werden.

Unicode-Zeichen unter Mac OS X eingeben

Unter Windows kann man Unicode-Zeichen eingeben, indem man die Alt-Taste gedrückt hält und den entsprechenden Zahlencode auf dem Numpad eingibt. Unter Mac OS X ist das etwas komplizierter gelöst. Im ersten Schritt muss das Tastaturpanel in den Einstellungen mit dem Tab Eingabequellen geöffnet werden.

Die Tastatur-Einstellungen

Die Tastatur-Einstellungen

Dort fügt man nun eine neue Sprache und Eingangsquelle hinzu. Diese hört dabei auf den Namen Unicode Hex-Eingabe. Wenn diese hinzugefügt wurde, erscheint in der Menüleiste ein Symbol zum Umschalten der Eingabequelle. Wenn man dort Unicode Hex-Eingabe aktiviert, kann man Unicode-Zeichen mittels der gewohnten Alt + nummerischer Code-Notation eingeben.

Tofu im Unicode

Wenn ein Font ein Zeichen nicht unterstützt, erscheint meist ein leeres Quadrat, welches besagt das dieses Zeichen in der aktuellen Schriftart nicht verfügbar ist. Dieses nicht vorhandenen Zeichen nennt man dabei Tofu. Unter dem Namen Noto (was für No Tofu steht) wird eine Schriftart mit dem Ziel entwickelt das alle Unicode-Zeichen in dieser enthalten sein sollen.

Ein Font für alle Sprachen

Ein Font für alle Sprachen

Dabei sollen bereits bis Ende 2014 alle Zeichen vorhanden sein, welche in lebendigen Sprachen genutzt werden. Entwickelt wird Noto dabei vom Google Internationalization Team. Der Font kann auf der entsprechenden Projektseite bezogen werden. Lizenziert ist Notu unter der Apache Lizenz und somit freie Software.

Seltsame Zeichen unter PuTTY

Wenn man PuTTY nutzt, wird man sich sicherlich das ein oder andere Mal über die seltsame Zeichen gewundert haben. Ein schönes Beispiel dafür ist der Midnight Commander, der anstatt mit der gewohnten Linienoptik mit ganz anderen Zeichnen arbeitet. Das Problem ist hier allerdings nicht beim Server zu finden. Stattdessen muss bei PuTTY gesucht werden.

Die PuTTY Optionen

Die PuTTY Optionen

Um das Problem zu beheben, sollte man in den Einstellungen unter „Window“ -> „Translation“ das „Remote character set“ auf UTF-8 stellen. Danach gehören die fehlerhaften Zeichen der Vergangenheit an.

Twitter und die Probleme mit Unicode URLs

Wenn man bei Twitter einen Account anlegt, und diesen mit einer Mailadresse verbinden will, ist das im Normalfall kein Problem. Interessant wird das ganze wenn man dort eine Mail nach dem Schema „example@entität.org“ angeben möchte. In dieser Adresse sind Unicodezeichen enthalten, in diesem Fall das „ä“.

Die nicht funktionierende Unicode Variante

Die nicht funktionierende Unicode Variante

Diese akzeptiert Twitter nicht als „richtige“ Mailadresse. Abhilfe schafft die die Umwandelung in Punycode z.B. mit dem Tool unter http://idnaconv.phlymail.de. Damit lautet die Entsprechung der Beispieladresse „“.

Mit der Punycode Umschreibung funktioniert es auch mit Twitter

Mit der Punycode Umschreibung funktioniert es auch mit Twitter

Diese umgeschriebene Adresse wird dann auch von Twitter akzeptiert.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Punycode