Theorie
 
 
 
 
 
Computertechnik
 
 
 
 
 
.. Stichwort: Unicode und UTF-8
 
 
 
 
 

 
 
 
 
 
Die aus Amerika stammende ASCII-Codierung, im Umfang von 128 Steuer- und Sonderzeichen, lateinischen Buchstaben und Ziffern, stellte sich aufgrund der rasanten Fortentwicklung der Computertechnik in allen Ländern dieser Welt, sehr schnell als 'zu kurz gegriffen' heraus. Schon in Europa gab es für jedes Land Zeichen, die im ASCII-Code nicht enthalten waren, ganz zu schweigen von griechischen, arabischen, japanischen, koreanischen, chinesischen und kyrillischen Schriftzeichen oder denen, die in Kulturen des afrikanischen Kontinents gepflegt werden.
Diesem Missstand widmete sich das 1991 gegründete Unicode Konsortium. Es sammelte möglichst vollständig alle Schriftzeichen gegenwärtiger und vergangener Kulturen und gruppierte diese zu Zeichensätzen, die nach sprachwissenschaftlichen Kriterien zusammengestellt wurden. Bis zur Unicodeversion 3.0 des Jahres 1999 kam man dabei mit Codes aus, die aus zwei Bytes bestehen und konnte somit 65536 Zeichen verschlüsseln. Diese Grenze wurde mit der Unicodeversion 3.1 vom Jahr 2001, die über 94.000 Zeichen enthält, überschritten. So mußte der Unicode auf vier Bytes ausgedehnt werden.
 
 
ISO/IEC 10646
Die Arbeit des Unicode-Konsortiums wurde inzwischen in die Norm ISO/IEC 10646 übernommen, so dass zumindest die zwei Bytes umfassenden Codes verbindlich sind. Diese werden auch als Basic Multilingual Plane (BMP) bezeichnet. Dabei entsprechen die ersten 128 Codes denen des ASCII-Zeichensatzes. Die weiteren Zeichensets können auf den Seiten des Unicode-Konsortiums nachgelesen und eingesehen werden.
 
 
Probleme mit dem Unicode
Die meisten Browser und viele Anwenderapplikationen können inzwischen mit dem Unicode umgehen. Das zentrale Problem stellen momentan die benötigten Zeichensätze dar. Der Unicode beschreibt, wie die anderen Zeichencodes auch, eine Zahl, die als Kennung für ein bestimmtes Zeichen im Speicher eines Computers abgelegt werden soll. Er beschreibt nicht die grafische Ausgestaltung, mit der ein Zeichen auf dem Bildschirm oder auf dem Drucker erscheinen soll. Hierfür sind die Zeichensätze zuständig, so wie sie auch jetzt schon in jedem Betriebssystem verfügbar sind. Beispiele sind die ANSI-Zeichensätze, wie Times New Roman, Arial usw.
Die Beschaffung der Unicode Zeichensätze kann durchaus aufwendig und kostspielig werden. Wer zudem einmal die Grösse eines Zeichensatzes auf seinem Computer betrachtet hat, wird erschreckt festgestellt haben, dass ein simpler Zeichensatz wie der der Schriftart 'Times New Roman', um die 200 bis 300 Kilobyte Speicher beansprucht, obwohl er nur 256 Zeichen enthält. Welcher Speicherumfang ist dann bei 65536 Zeichen oder gar 4.294.967.296 des vier Byte Unicode notwendig?
Es ist klar, dass beim heutigen Stand der Computertechnik nur Untermengen des Unicode-Zeichensatzes in einem Computer verfügbar gehalten werden können.

Ein weiteres Problem ist, dass Textdokumente welche den Zeichencode in zwei Bytes aufheben, doppelt so lang sein müssen wie solche, die nur ein Byte pro Zeichen benutzen. Bei vier Bytes wären die Dokumente sogar vier mal so umfangreich. Um den unnötigen Bedarf von Speicherplatz zu begrenzen, wurde eine 'platzsparende' Codierung für den zwei Byte umfassenden Unicode eingeführt. Der Begriff platzsparend gilt hier allerdings nur für die häufig benutzten lateinischen Schriftzeichen. Diese Codierung wird als UTF-8 Codierung bezeichnet.
 
 
UTF-8 Codierung des zwei Byte-Unicodes
Bei dieser Verschlüsselung von Unicodezeichen werden aus den zwei Bytes umfassenden Codezahlen solche, die ein bis drei Bytes umfassen. Die am häufigsten benutzten Zeichen des Unicodes werden in einem Byte aufgehoben, solche die weniger häufig auftreten in zwei Bytes und seltene Zeichen in drei Bytes.
Damit ein Programm erkennen kann, ob es ein, zwei oder drei Bytes zum Erhalt des vollständigen Zeichencodes lesen muss, wurden den Bytes Kennungen oder Masken mitgegeben. Die Regeln lauten ..


  • Besitzt das erste gelesene Byte im höchsten Bit eine 0, so liegt bereits der vollständige Code vor. Es handelt sich in diesem Fall um ein Zeichen der ASCII-Codetabelle.
    Beispiel: 0xxx.xxxx
    Auf diese Weise werden die Zeichen 0-127 codiert
  • Beginnt das erste gelesene Byte ab dem höchsten Bit mit 110, so muss ein zweites Byte gelesen werden, welches seinerseits mit 10 beginnt. Die verbleibenden Bitpositionen stellen den Zeichencode x dar.
    Beispiel: 110x.xxxx 10xx.xxxx
    Auf diese Weise werden die Zeichen 128-2048 codiert
  • Beginnt das erste gelesene Byte ab dem höchsten Bit mit 1110, so müssen zwei weitere Bytes gelesen werden, welche ihrerseits mit 10 beginnen. Die verbleibenden Bitpositionen stellen den Zeichencode x dar.
    Beispiel: 1110.xxxx 10xx.xxxx 10xx.xxxx
    Auf diese Weise werden die Zeichen 2048-65636 dargestellt.
 

 

 

 

www..de