UTF-8 – Multi-Byte-Zeichenverarbeitung ist ein aktuelles Programmierthema. Noch vor wenigen Jahren waren wir froh und glücklich, wenn wir mittels unserer Tastatur die Zeichen eingeben konnten, die wir zur Erstellung von Texten in unserer jeweiligen Landessprache benötigten. 256 verschiedene Zeichen standen, inklusive der nicht druckbaren Steuerzeichen, zur Verfügung. Das war in der Regel hinreichend. Unangenehm wurde es nur, wenn wir Texte in anderen Landessprachen bekamen, die Zeichen enthielten, die nicht in unserem Zeichensatz enthalten waren. UTF-8 und Co. machen zwar das Leben für Endanwender leichter, erfordern aber anderseits vom Programmierer eine Multi-Byte-Zeichenverarbeitung.
Insbesondere Programmieranfänger raufen sich die Haare. Hatten wir früher verlässlich ein einzelnes Byte zur Zeichenkodierung, so sind wir heute mit so genannten Multi-Byte-Zeichensätzen konfrontiert. Der ehedem zur Zeichendarstellung verwendete Datentyp, bei Free Pascal beispielsweise Char
oder char
in C/C++, funktioniert nicht mehr zuverlässig. Ein Char
, besitzt nur ein Byte, eine Eigenschaft, die sich dieser Datentyp mit den meisten Zeichendatentypen anderer Programmiersprachen teilt. Wollen wir einzelne Zeichen untersuchen, so treffen wir vielfach auf Zeichen, die sich mit diesem Datentyp nicht darstellen lassen. Noch viel schlimmer ist es, dass wir ohne penible Analyse dessen, was wir in den Händen halten, nicht einmal wissen, wie viele Bytes ein Zeichen überhaupt hat. In der weit verbreiteten UTF-8-Kodierung können Zeichen nämlich ein bis vier Bytes belegen. Das macht die Welt für den Programmierer nicht eben einfacher! – Die einschlägigen Internetforen sind deshalb voll mit Fragen zur Verarbeitung von Multi-Byte-Zeichen.
Leserprofil
Jeder, der programmiert, ist mit dem Problem der Zeichenverarbeitung konfrontiert. Insbesondere für Programmieranfänger stellt die Verarbeitung von Multi-Byte-Zeichen oftmals ein Problem dar. Weil der Beitrag setzt grundlegende Programmierkenntnisse voraus.
Inhalt
Ausgehend von einer Erläuterung von Unicode und dessen unterschiedlicher Kosierungen, wird insebsondere auf die Kodierung UTF-8 eingegangen. Diese finden wir regelmäßig in Unix-Betriebssystemen, wie beispielsweise Gnu/Linux oder macOS. Der Beitrag zeigt, wie auf einzelne Zeichen zugegriffen werden kann, wie diese gezählt und sortiert werden können.
Als Programmiersprache wird in diesem Artikel Free Pascal verwendet. Compiler sind sowohl für Microsoft Windows, als auch für Gnu/Linux und macOS gratis verfügbar.
Download bei SourceForge: https://sourceforge.net/projects/freepascal/
Der Leser kann die Beispielcodes einfach am heimischen Rechner nachvollziehen. Free Pascal ist ein Nachfolger der Programmiersprache Pascal, die von Niklaus Wirth ehedem als Lehrsprache entworfen wurde. Die Syntax ist deshalb so beschaffen, dass auch Nicht-Pascal-Programmierer die Programme leicht verstehen und nötigenfalls einfach in die von Ihnen bevorzugte Programmiersprache übersetzen können.
Als Beispiel für die Übertragbarkeit den vermittelten Wissens enthält der Beitrag auch ein in C formuliertes Beispielprogramm.
Download
Weil die Ausführungen für eine Webseite zu umfangreich sind, stellen wir Ihnen den Beitrag als PDF-Datei zur Verfügung.
Karsten Brodmann