Java verarbeitet Zeichen (bisher) intern in 2-Byte Unicode. Gespeichert werden Daten aber in der Regel in UTF-8 oder, für uns in Europa, in Latin-1. Thema der Woche ist Unicode und die Umkodierungen. Am Anfang sollen The Ten Commandments of Unicode von Elliotte Rusty Harold stehen:
- I am Unicode, thy character set. Thou shalt have no other character sets before me.
- Thou shalt carefully specify the character encoding and the character set whenever reading a text file.
- Thou shalt not refer to any 8-bit character set as “ASCII”.
- Thou shalt ensure that all string handling functions fully support characters from beyond the Basic Multilingual Plane. Thou shalt not refer to Unicode as a two-byte character set.
- Thou shalt plan for additions of future characters to Unicode.
- Thou shalt count and index Unicode characters, not UTF-16 code points.
- Thou shalt use UTF-8 as the preferred encoding wherever possible.
- Thou shalt generate all text in Normalization Form C whenever possible.
- Thou shalt avoid deprecated characters.
- Thou shalt steer clear of the private use area.
Da schließen sich nun einige Fragen an, die es zu klären gilt:
- Was ist der Unterschied zwischen ASCII, Unicode 2 und Unicode 4?
- Was ist ein Code-Point? Welche Funktionen in Java 5 sind wegen Unicode 4 hinzugekommen? Welche beiden Funktionen zum Zugriff auf ein Zeichen gibt es? Resultieren daraus Performance-Unterschiede?
- Was ist eine Kodierung? Wie wird sie in Java bestimmt? Durch einen String oder durch eine Klasse?
- Welchen Funktionen/Konstruktoren der Java Klassenbibliothek nehmen eine Kodierungskennung entgegeben? Nenne mehrere Wege, wie man Strings/Byte-Felder umkodiert.
- Gibt es XML-Parser in Java, die Unicode 4 unterstützten? Was sagen die Autoren von XML-Parsern zu Unicode 4?
- Warum kann es beim Datenbankzugriff auf Textspalten Probleme geben? Gibt es dokumentierte Probleme/Lösungen?
Auch neu: tutego’s Clip-Art Seite. Links zu weiteren Clip-Art Sammlungen (ohne die lästigen Popup-Menüs) sind willkommen.