Des einen Freud, des anderen Leid: Programmieren mit Unicode

Programmierer und Informatiker sollten sich eigentlich freuen: Unicode ist ein gesundes Konzept, das zahllose Probleme in der Datenverarbeitung beseitigen wird. Leider hat die Natur vor die Freuden der Kinderschar die Geburtswehen gesetzt. Und die sind leider immer noch nicht ganz ausgestanden. Ausgehend von dem einfachen (aber unzureichenden) alten Konzept, dass ein Buchstabe mit einem Byte dargestellt wird, hatten zahllose Codezeilen in die Programme Einzug gehalten, die tatsächlich auch nur dann fehlerfrei funktionierten.

Da waren natürlich zum einen die Umsetzungen der einzelnen Stringfunktionen (etwa das Ermitteln der Länge eines Strings oder das Abschneiden des ersten Buchstabens), die in den Programmiersprachen erstmal unter dem Aspekt der eventuellen Mehrbyte-Darstellung zur Verfügung gestellt werden mussten. Man kann mittlerweile sagen, dass alle bedeutenden Programmiersprachen die Funktionalität für einen mehr oder minder komfortablen Umgang mit Unicode Strings im Portfolio haben.

Manche Sprachen haben intern sowieso eine Multibyte String Darstellung (z.B. Java), das heißt, wenn die Daten erst einmal richtig im Programm angekommen sind (sprich: sie mit dem korrekten Encoding gelesen wurden), kann man als Programmierer erst mal nicht mehr viel falsch machen. Andere Sprachen (z.B. PHP) stellen einen String lediglich als Bytefolge dar: wer versehentlich mit der Standardfunktion strlen auf einen UTF-8 String zugreift, erlebt hier sein blaues Wunder. Vielmehr muss man explizit die entsprechende Funktion namens mb_strlen aus dem Paket Multibyte String Functions verwenden. Bleibt zu hoffen, dass der Service Provider den Multibyte Support für PHP entsprechend konfiguriert hat.

Und so ist beim Programmierer erhöhte Aufmerksamkeit vonnöten, um die korrekte Behandlung aller Texte zu gewährleisten. Im Folgenden sollen noch einige konkrete Probleme etwas näher beleuchtet werden, die meiner Meinung nach besonders relevant für den Umgang mit Unicode sind. Natürlich spiegelt die Auswahl hier persönliche Erfahrungen wider, es wird kein Anspruch auf Vollständigkeit erhoben. Da UTF-8 die häufigste Kodierung zur Darstellung von Unicode-Daten ist (weil sie einen geringen Platzbedarf hat), werden im weiteren Verlauf des Dokumentes die Begriffe Unicode und UTF-8 quasi synonym verwendet.