| Unicode ist ein Standard für die Codierung von Zeichen. Er verwendet 21 Bit. Von den theoretisch codierbaren >2 Mio Zeichen sind derzeit >100000 definiert. Gegenüber ASCII- und ISO-Codes benötigen Unicode-Zeichen daher mehr Speicherplatz. | Unicode hat mit 21 Bit eine für die IT unbrauchbare Wortbreite. UTF-Algorithmen codieren / decodieren Unicode in Worte anderer Breite für die praktische Anwendung. Wie jede Codierung verlangt UTF zusätzlichen Rechen-Aufwand. Dafür wird meist der Speicherbedarf stark reduziert. |
Zeichencodes
|
PC-Codes für Zeichen, Unicode |
| UTF | Unicode Transformation Format |
| UTF-32 | Unicode-Zeichen in 32-Bit Worten |
| UTF-16 (UCS2) | Unicode-Zeichen in 16-Bit Worten |
| UTF-8 | Unicode-Zeichen in 8-Bit Worten, Übersicht, Details mit Live-Codierung |
| UTF-7 | Wenn nur 7 Bit zulässig sind - Details |
| UTF-5 | Internationale Domain-Namen iDNS |
| UTF-9 und UTF-18 | Konsequente Weiterentwicklung für 9-Bit PC |
| Programmierung | UTF in Programmiersprachen |
| Links |
Ausgewählte
|
UTF (Unicode Transformation Format) |
|
|
UTF bezeichnet eine ganze Familie von exakt umkehrbaren
Algorithmen zur Codierung / Decodierung von
→ Unicode-Zeichen. ▲ Unicode ist der aktuelle internationale (!) Standard zur Codierung von Zeichen. Umfasst derzeit ca. 1 Million Zeichen (U+0000...U+E01EF), mit Erweiterungs-Kapazität für >4 Milliarden Zeichen. ▲ Die 'abgemagerte' Version mit Codes U+0000...U+FFFF wird heute von jeder gängigen Software unterstützt- UTF ist jedoch auf alle Unicode-Zeichen U+0000...U+10FFFF anwendbar. ▲ UTF ist in ISO/IEC 10646 als Standard definiert. |
▲
Die (derzeitige) Unicode-Wortbreite von 21 Bit ist für die
IT nicht verwendbar. Die UTF-Algorithmen wandeln Unicode-Zeichen in andere Wortbreiten um.
Dabei werden verschiedene Anforderungen optimiert: ▲ Der populärste Standard → UTF-8 ist besonders sparsam mit Speicherplatz. UTF-16 und UTF-32 sind besonders schnell, UTF-5 und UTF-7 zwängen Unicode-Zeichen für spezielle Bereiche in Worte geringer Bit-Breite. ♣ Tipp: Die Namen aller UTF-Varianten sind genormt, sie müssen genau in dieser Form verwendet werden. ♣ In der UTF-Literatur wird öfters der Begriff 'octet' für eine Zahl 0..255 verwendet (=1 Byte). |
Die UTF-Familie:▲ UTF-8:Die Statistik der weltweit verwendeten Zeichen zeigt, dass die überwiegende Mehrzahl aus dem Code-Bereich #00..7F (→ ASCII) stammt. Das legt den Gedanken nahe, diese Zeichen sparsam mit nur 1 Byte (#00..#7F) zu codieren. Für alle anderen - selten verwendeten - Zeichen wird ein Algorithmus definiert, der es erlaubt, die dafür notwendigen Codes (>1 Byte) und die 1-Byte-Zeichen zu mischen. Das ist die Grundlage des UTF-8 Algorithmus, der heute am weitesten verbreitet ist. ■ Details zu UTF-8 auf einer eigenen Webseite. |
▲
UTF-16 und UTF-32 verwenden zur Darstellung jedes einzelnen Zeichens Worte von 2 bzw. 4 Bytes.
Diese Algorithmen benötigen daher wesentlich (!) mehr Speicherplatz als UTF-8, arbeiten jedoch bedeutend schneller. Sie werden vorteilhaft dort eingesetzt, wo viele kurze Texte rasch verarbeitet werden sollen. Wegen des hohen Speicherbedarfs sind diese Algorithmen für große Datenbanken ungünstig. Von beiden Algorithmen existieren Varianten mit unterschiedlicher Reihenfolge der Bytes (little-endian, big-endian). |
| ▲ In einigen Fällen können nicht alle 8 Bit eines Bytes zur Codierung von Daten verwendet werden (z.B. manche Systeme zur Daten-Übertragung). Dann ist es notwendig, Zeichen in Portionen zu 5,6 oder 7 Bit zu codieren. Dafür sind eigene UTF-Algorithmen verfügbar. |
Die Programmiersprache →
PHP bietet im Modul mbstring (MultiByte String) einige Funktionen
zur Unterstützung von MultiByte Zeichensätzen, darunter UTF-32, UTF-16, UTF-8, UTF-7.
Dieses Modul ist jedoch normalerweise nicht aktiviert und muss eigens konfiguriert werden.
(
|
UTF-32 |
|
|
UTF-32 ist ein Algorithmus zur Codierung / Decodierung von
→ Unicode-Zeichen in
32-Bit (4-Byte)-Worte. Alle Zeichen haben die gleiche fixe Länge von 32 Bit (4 Byte). Diese UTF-Variante ist die schnellste Möglichkeit, Unicode-Zeichen zu verwalten, benötigt jedoch den meisten Speicherplatz. Daher wird UTF-32 vorläufig nur von Hochleistungs-(Unix)-Betriebssystemen verwendet. |
UTF-32 ist in 2 Varianten möglich: UTF-32BE und UTF-32LE unterscheiden sich in der Reihenfolge der Bytes: BE = big endian, höchtwertiges Byte zuerst LE = little endian Wenn die Variante nicht durch die Definition festgelegt ist ('unmarked'), dann bestimmt das erste Datenwort (Byte Order Mark BOM) die Version. Wenn auch das BOM fehlt, dann wird UTF-32BE angenommen. |
|
Das BOM für UTF-32BE lautet 00 00 FE FF, das BOM für UTF-32LE ist FF FE 00 00. Das BOM wird auch verwendet, um Text-Dateien allgemein als Unicode-Daten zu bezeichnen. |
|
UTF-16 (UCS2) |
|
|
UTF-16 ist ein Algorithmus zur Codierung / Decodierung von
→ Unicode-Zeichen in 16-Bit
(2-Byte)-Worte. Je nach Zeichen werden 1 oder 2 Worte (2..4 Byte) zur Codierung verwendet. Die ersten 65535 Unicode-Zeichen (U+0000..U+FFFF) werden in UTF-16 direkt als 2-Byte-Worte dargestellt. Da fast alle derzeit verwendeten Zeichen in diesen Bereich fallen, und da der Algorithmus sehr einfach ist, arbeitet UTF-16 sehr schnell. Alle weiteren (seltenen) Zeichen werden mit zwei 2-Byte-Worten dargestellt. |
UTF-16 ist in 2 Varianten möglich: UTF-16BE und UTF-16LE unterscheiden sich in der Reihenfolge der Bytes. BE = big endian, höchtwertiges Byte zuerst LE = little endian. Wenn die Variante nicht durch die Definition festgelegt ist ('unmarked'), dann bestimmt das erste Datenwort (Byte Order Mark BOM) die Version. Wenn auch das BOM fehlt, dann wird UTF-16BE angenommen. Die Betriebssysteme Windows (neuere Versionen) und MacOSX sowie die Programmiersprachen → Java und → Javascript verwenden UTF-16 zur internen Darstellung aller Text-Zeichen. Die Datenbank MySQL kennt UTF-16 unter der Bezeichnung UCS2. |
|
Export von UTF-16: |
Import von UTF-16: Alle gängigen Büro-Programme, auch WordPad und der Windows-Editor importieren UTF-16 fehlerfrei. Die meisten Programme erkennen UTF-16 auch dann, wenn das BOM (s.u.) fehlt - das ist jedoch nicht empfehlenswert. |
|
Algorithmus zur Codierung Unicode → UTF-16: Je nach Zeichen-Code wird einer von 2 Algorithmen verwendet. Das begünstigt die meist verwendeten Zeichen U+0000..U+FFFF.. ● Als erstes Wort eines Strings wird das BOM (Byte Order Mark) eingesetzt. FE FF bezeichnet UTF-16BE (big-endian), FF FE bezeichnet UTF-16LE (little-endian). Die beiden Codes sind speziell für diesen Zweck reserviert. ● Alle Zeichen 0..65535 (U+0000..U+FFFF) werden mit je 1 Wort = 2 Byte direkt codiert. Führende Leerstellen werden mit 0-Bits gefüllt. |
●
Alle Zeichen 65536..2047 (U+010000..U+10FFFD)
werden mit je 2 Worten = 4 Byte codiert. Zur Codierung dieser Zeichen werden zwei 16-Bit-Worte (4 Byte) in Form sog. Surrogat-Paare verwendet. Dabei wird der (derzeit) leere Unicode-Bereich U+D800..U+DFFF ausgenutzt. • Vom Code wird 0x10000 subtrahiert. Danach werden die oberen 10 Bit mit führenden 0-Bits ergänzt und getrennt von den unteren 10 Bit verarbeitet. • Die oberen 10 Bit werden mit 0xD800 ODER-verknüpft und ergeben das höher-wertige Wort • Die unteren 10 Bit werden mit 0xDC00 ODER-verknüpft und ergeben das niedriger-wertige Wort • Die beiden Worte werden gespeichert, bei UTF-16LE das niedriger-wertige Wort zuerst, bei UTF-16BE umgekehrt. |
Fehler:Nicht alle Byte-Folgen sind nach UTF-16 zulässig. Die Standard-Reaktion bei Auftreten von Fehlern ist Abbruch / Fehlermeldung. Wegen der 'Reservierung' der Surrogat-Bereiche ist es unzulässig, die Codes U+D800..U+DFFF als 'Zeichen' zu verwenden - sie enthalten nach Unicode-Definition ohnehin keine darstellbaren Zeichen. |
Programme wie z.B. Browser sind besonders 'tolerant' erstellt und ignorieren meistens allfällige UTF-Fehler. Heikle Programme z.B. auf Servern sollten UTF-Fehler jedoch schonungslos behandeln - andernfalls könnten sie von Hacken illegal verwendet werden. |
UTF-8 |
|
| UTF-8 ist der meist-verwendete Algorithmus zur Codierung / Decodierung von → Unicode-Zeichen in 8-Bit (1-Byte)-Worte. Da jede gängige Software mit 1-Byte Zeichen (z.B. ASCII) arbeitet, sind damit UTF-8 Texte ohne jede Änderung zumindest weitgehend 'lesbar'. |
Vereinbarung von UTF-8 in einer HTML Webseite:
<meta http-equiv="Content-Type"
content="text/html;
charset=utf-8"/>
|
|
Je nach Zeichen werden 1..4 Byte zur Codierung verwendet. Die besonders häufig verwendeten → ASCII-Zeichen sind unverändert (1 Byte) als Untermenge in UTF-8 enthalten. Mit abnehmender Häufigkeit der Zeichen werden diese in 2..4 Byte aufeinander folgender Sonderzeichen codiert. |
UTF-8 kann alle →
Unicode-Zeichen codieren und ist darüber hinaus sehr platzsparend. Die Bedeutung von UTF-8 nimmt rasch zu, besonders dort, wo nur wenige nationale Sonderzeichen >U+007F zu codieren sind. ● Im deutschen Sprachraum brauchen nur diese 7 Sonderzeichen je 2 Byte ÄÖÜäöüß und das €-Zeichen 3 Byte. Alle anderen Zeichen werden mit je 1 Byte codiert. |
|
Viele Protokolle, die ursprünglich nur ASCII verwendeten, unterstützen
heute UTF-8, obwohl teilweise noch nicht 'offiziell' so definiert: FTP, GO (CNRP), IMAP (modifizierter UTF-7 Code), URN, ... Die Datenbank MySQL kann ab Version 4.1 Zeichensätze für Felder festlegen, darunter auch UTF-8. |
Die Programmiersprache
→ Perl verwendet UTF-8 zur internen Darstellung von Text-Zeichen. Die Programmiersprache → Java verwendet zwar zur internen Zeichen-Darstellung UTF-16, unterstützt jedoch auch 'modified UTF-8', eine in wenigen Details geänderte Variante. |
| ♦ Umfangreiche Details zum Thema UTF-8 auf einer eigenen Seite. |
Live-Test (Umwandlung von Texten),
Algorithmus,
Codierung,
Decodierung,
UTF-8-Dateien,
Datenbank,
Programmierung
|
UTF-7 |
|
|
UTF-7 ist ein Sammelname für Verfahren zur Codierung / Decodierung von
→ Unicode-Zeichen mit 7 Bit. Manche Technologien (z.B. SMTP für Mail, NNTP für News, ..) können nur 7 Bit Daten transportieren. Längere Daten müssen daher in 7-Bit Einheiten codiert werden, das erfordert Zeit für den Algorithmus und vergrößert insgesamt die Länge der Daten. UTF-7 ist zwar in Standard RFC 2152 festgelegt, jedoch nicht eindeutig (wie z.B. UTF-32, UTF-16 und UTF-8). Es gibt unterschiedliche Verfahren (Base64, 'Quoted printable') zur Codierung / Decodierung. Der Vorrat zulässiger 'sicherer' Zeichen umfasst nur A-Za-z0-9'(),-./:? Alle anderen Zeichen sollten UTF-7 codiert werden: Manche Programme unterstützen nur diese Zeichen. |
Algorithmus: Direkt verwendbare Zeichen und codierte Zeichen werden gemischt. Der Beginn einer codierten Sequenz wird mit + angezeigt, das Ende mit -. Zu codierende Zeichen werden in UTF-16 umgewandelt, die Bits in 6-Bit Gruppen angeordnet und codiert (Base64). Die sich ergebenden Zeichen werden zwischen + und - in den Datenstrom bzw. in die Datei eingefügt. |
| Die Programmiersprache → PHP bietet im Modul imap die Funktionen imap_utf7_encode() und imap_utf7_decode() | |
UTF-5 |
|
|
Dieser Code hat Bedeutung für Internationale (Multiliguale) Domain-Namen (iDNS).
Die Syntax für Internet-Adressen (→
URL/URI) beschränkt in ihrer alten Form die dafür verwendbaren Zeichen
auf 0..9, A..Z
und -. Das Domain Name System (DNS) verknüpft Domain-Namen mit IP-Adressen. Das macht es möglich, mit leicht merkbaren Namen wie z.B. google oder yahoo zu arbeiten und nicht mit den sperrigen Adressen. |
Domain-Namen in der gewohnten Umgangssprache sind Grundbedingung für die breite
Verwendung des Internet durch jene 2/3 aller Menschen, die keine lateinischen Zeichen
verwenden. UTF-5 bietet für alle menschlichen AnwenderInnen verständliche Domain-Namen, verwendet jedoch intern weiterhin wenigen die wenigen 'alten' Zeichen. Das erfordert einigen Aufwand für die Codierung und Decodierung, außerdem werden die Zeichenketten UTF-5 codierter Domain-Namen ziemlich lang. Dafür ist das System sofort verwendbar, da es keine Eingriffe in die Software der zahllosen in das Internet eingebundenen Server und Router erfordert. |
| UTF-5 wurde 1999 an der Univ. Singapur entwickelt und wird bereits von tausenden Organisationen und Unternehmen verwendet, obwohl (derzeit) noch nicht international standardisiert. | Erst die Zukunft wird weisen, ob sich UTF-5 für iDNS durchsetzt (sofort verfügbar, keine Eingriffe, jedoch kompliziert und langsam) oder UTF-8 (universeller, rascher, jedoch Eingriffe notwendig). |
UTF in Datenbanken |
|
|
Mit der Globalisierung steigt auch der Druck, die Texte von Datenbanken
global eindeutig lesbar zu machen. In der Praxis ist die Behandlung mehrsprachiger Texte in vielen Betrieben leider noch sehr mühsam. |
Das ist sogar auf nationaler Ebene notwendig, denn z.B. in Österreich kann man nicht einmal die Ortsnamen von gemischt-sprachigen Gebieten mit einem einzigen ISO-Zeichensatz darstellen. |
|
Die Datenbank macht normalerweise keine Probleme: Jedes Textfeld kann natürlich auch UTF-8 codierte Texte aufnehmen. Die Schwierigkeiten liegen bei der Ein- und Ausgabe der Daten. Moderne Datenbanken bieten darüber hinaus Unicode-Funktionen. Dieser SQL-Befehl zeigt alle verfügbaren MySQL-Zeichensätze:
show character set;
# oder in älteren Versionen
show global variables;
|
Erzeugung einer MySQL-Tabelle im UTF-8 Format bzw. Änderung einer bereits
angelegten Tabelle:
create table `utest` (`idx` int unsigned not null auto_increment,`txt` varchar(20),
primary key (`idx`) )character set utf8;
Im Feld 'txt' wird UTF-8 Code gespeichert, d.h. 1..3 Byte pro
Zeichen (U+0000..U+FFFF).alter table `test` character set utf8; Verwenden sie für Text-Felder immer die Type varchar. Für Felder fixer Länge wie char(20) wird immer die 'worst case'-Länge reserviert, in diesem Falle 60 Byte pro Datensatz ! Alternativ kann eine Tabelle auch im UTF-16 Format angelegt werden, die Option lautet dann character set ucs2. In diesem Falle werden immer 2 Byte pro Zeichen gespeichert. Übliche Admin-Programme kennen die Unicode-Funktionen von MySQL nicht immer, man muss dann die Befehle direkt als SQL-Code eingeben. |
|
Die Funktionen CONVERT(src USING chrset)
und CAST(src AS CHAR CHARACTER SET chrset) dienen zur
Umwandlung von Text von/nach verschiedenen Zeichensätzen. Vorsicht - andere
Zeichensätze (z.B.
→ ISO-8859-1 Latin-1) können die meisten Unicode-Zeichen nicht darstellen ! (siehe unten function utf8_to_html() ). |
select convert(_latin1'Größe' using utf8);
Diese Funktionen dienen nicht nur der Eingabe und Ausgabe (nur legale Zeichen),
sondern werden auch bei jeder Abfrage benötigt !
select cast(_latin1'Größe' as char character set utf8); |
Eingabe:Der Import fertig codierter → UTF-8 Texte in eine Datenbank ist kein Problem.Export von UTF-8 aus Programmen: Er bietet eine sauber arbeitende Option zum Speichern von Textes als UTF-8. Man kann aus jedem Windows-Programm Texte (inkl. Unicode-Zeichen bis U+FFFF) in den Editor kopieren und ihn so als UTF-8 Codierer verwenden. ① Jedes UTF-8 exportierende Programm sollte als Byte-Order Mark (BOM, s.o.) von UTF-8 die ersten 3 Bytes EF BB BF exportieren. Das ist zwar optional, hilft anderen Programmen jedoch, UTF-8 zu erkennen. |
Für die manuelle Eingabe und Pflege von Datenbank-Texten kann derzeit oft nur ein ISO-Zeichensatz verwendet werden. Die Tastatur lässt sich zwar in jedem gängigen Betriebssystem umschalten, die Software reagiert jedoch nur in seltenen Fällen richtig. Ideal ist eine Software, welche die manuelle Eingabe bzw. Änderung von Texten in mehreren Zeichensätzen ermöglicht, wenig Aufwand für die Umschaltung erfordert und dabei sämtliche Zeichen UTF-8 codiert. Bis zur Verfügbarkeit wirklich brauchbarer Lösungen muss man sich leider mit eigenen Programmen behelfen. |
Ausgabe:Wenn Datenbank-Text in anderen Programmen weiter verarbeitet wird, so ist das kein Problem: Alle gängigen Büro-Programme (LibreOffice, MS-Word, ..) können UTF-8 Texte importieren. |
♦ Auf der UTF-8 Detail-Seite finden sie ein Muster zur Umwandlung von UTF-8 Text in HTML (Anzeige auf Webseiten). |
Programmierung - UTF in Programmiersprachen |
|
Dokumente:Manche 'Programmiersprachen' erlauben die Verwendung von Dokumenten, welche zur Gänze UTF-codiert sind. Die Vereinbarung erfolgt unterschiedlich, z.T. mit Attributen in spezieller Syntax, z.T. mit Byte Order Marks (BOMs).♣ Sie sollten sich nur bei Verwendung eigener Dokumente darauf verlassen - Prüfen sie in jedem anderen Fall, welcher Code verwendet wurde. Derzeit verwenden die viele Dokumente noch → ISO-8859-1 (Latin-1), zunehmend verbreitet sich jedoch → UTF-8. ♣ Verwenden sie für neue Entwicklungen nur UTF-8. Sie können ihre Webseiten mit dem Logo " Unicode Encoded" versehen, wenn diese in sauberem HTML bzw. XHTML erstellt und in UTF codiert sind. |
HTML:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
XHTML (fast alle Seiten dieses Webs):
<?xml version="1.0" encoding="utf-8" ?>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> XML: <?xml version="1.0" encoding="utf-8" ?>
|
|
PHP
bietet eine Auswahl verschiedener Möglichkeiten: Modul xml: (Standard-PHP)
Funktion
utf8_encode() übersetzt
ISO-8859-1 (Latin-1) → UTF8
Modul mbstring
(Multibyte String, Standard-PHP):
Funktion utf8_decode() übersetzt UTF8 → ISO-8859-1 (Latin-1)
Funktion mb_convert_encoding()
Modul iconv
(seit Version 5 Standard-PHP) kann einige Zeichensätze umwandeln. Verschiedene
Optionen für nicht darstellbare Zeichen.
Funktion iconv()
Modul recode:
Bisher nicht in Standard-PHP enthalten, muss compiliert werden. Kann dafür ca. 150
verschiedene Zeichensätze umwandeln.
Funktion recode_string()
Function strtr()
(Standard-PHP) erlaubt die frei programmierbare Umwandlung von Strings.
|
$iso1 = "abcäöü";
$utf8 = utf8_encode($iso1);
/*
$iso1 = utf8_decode($utf8);$tmp = recode_string('latin1..utf8',$s); $utf8 = iconv('iso-8859-1','utf-8', $tmp); */ $utf8 = iconv("ISO-8859-1","UTF-8",$iso1); $iso2 = iconv("UTF-8","ISO-8859-2",$utf8); ♣ Auf der UTF-8 Detail-Seite finden sie eine PHP-Funktion zur Praxis-nahen Umwandlung von UTF-8 in HTML-Quelltext. |
Basic (LibreOffice-Basic, Visual Basic VBA)Scheint nicht über irgendwelche Funktionen zur Unterstützung von UTF zu verfügen. Man muss sie offenbar selbst herstellen . . |
♣ Auf der UTF-8 Detail-Seite finden sie Basic-Funktionen zum Codieren und Decodieren von UTF-8. |
UTF-Algorithmen codieren Unicode-Zeichen in kleinere Einheiten |
|
Verringerung des Speicher-Bedarfs:Unicode-Zeichen benötigen 21 Bit zur Darstellung aller heute definierten Zeichen. Selbst wenn man (in veralteten Betriebssystemen) nur die ersten 65536 Zeichen anzeigt, benötigt man dafür 16 Bit.Gängige Software-Systeme (Transport, Speichern, Verarbeiten) sind jedoch noch großteils für kleinere 'Worte' (5,7,8 Bit) ausgelegt. In vielen Praxis-Fällen muss man daher Unicode-Zeichen in andere (kleinere) Einheiten codieren. Jede Darstellung in Codes kleinerer Breite (weniger Bit/Einheit) erfordert zusätzlichen Aufwand in Form von 'Umschalt-Bits', welche die Daten vergrößern/verlängern. Darüber hinaus verbraucht man Rechenzeit zur Code-Umwandlung. |
Ein vergleichbares Beispiel sind die Umschalt-Tasten einer PC-Tastatur: Sie ermöglichen es, die gleichen Tasten je nach Stellung der Umschalt-Tasten für mehrere Zeichen zu benutzen. Der Preis dafür ist, dass zusätzlich zum Code jeder Taste der Code der Umschalt-Tasten berücksichtigt werden muss. Für die Umwandlung von Unicode in kleinere Einheiten gibt es mehrere standardisierte Algorithmen, festgelegt in den UTF-Standards. Codierung und Decodierung kosten Prozessor-Zeit: Solche Verfahren werden daher überall dort angewendet, wo ASCII-Zeichen nicht genügen, aber Speicherplatz oder Bandbreite knapp sind. |
Unterdrückung führender Null-Bits:Die meisten in der Praxis verwendeten Zeichen stammen aus dem ASCII-Bereich (0...127). Das bedeutet Unicode-Zahlen, deren höherwertige 9..25 Bit nur Null-Bits enthalten.Von solchen Zeichen kann man die meisten Null-Bits weglassen, wenn man mindestens 1 Bit der Daten für die Aussage 'direkt ASCII-codiert' verwendet. |
Alle anderen Unicode-Zahlen werden in mehrere Einheiten ('Worte') zerlegt. Das ergibt kurze Codes für häufige Zeichen, längere für seltenere Zeichen. Wenn man reinen ASCII-Text derart (UTF-7, → UTF-8) codiert, dann ist der entstehende Code 7 Bit bzw. 8 Bit (1 Byte) sogar wesentlich kleiner als der Original-Unicode mit theoretisch 21 Bit / Zeichen. |
UTF-7codiert 16-Bit Unicode in 7-Bit Einheiten, für Pogramme und Medien, die nur ASCII-Zeichen (0..127) 'verstehen', z.B.:Das E-Mail Protokoll SMTP (Simple Mail Transport Protocol) erwendet für die transportierten Nachrichten nur diese Zeichen:
A-Z a-z 0-9 ! " # $ % & ' ( ) * , - . / : ; < > ? @ [ ] ^ _ ` { | }
Alle anderen Zeichen werden in dieser Form codiert:
+ character -
|
Die Regeln sind nicht trivial: Verwenden sie am besten bewährte Programme zur Codierung / Decodierung. ♣ Tipp: Texte vor der UTF-7 Codierung in Zeilen zerlegen. |
| UTF-32 An abbreviation for UCS Transformation Format for Planes up Through 16 using 32 -bit form. An encoding transformation form which conforms to Unicode character semantics, able to reference the first group of 17 planes (planes 0 through 16) of ISO/IEC/10646 directly using 32-bit code points instead of surrogate code points. |
The use of UTF-32 instead of UCS-4 encoding applies three major restrictions: (1) Unicode character semantics apply; (2) 32-bit code points above #0010FFFF> are illegal (3) Three forms are defined: UTF-32BE (big endian), UTF-32LE (little endian), and UTF-32. The latter form uses a byte order mark #0000FEFF as the first character in the data stream to determine the byte polarity of the data. |
|
Die meisten der heute gebräuchlichen
→ Schrift-Familien
enthalten nur eine Auswahl wichtiger Schriftzeichen. Fast das ganze Unicode-Inventar ist in
so genannten Bigfonts enthalten, die allerdings wegen ihrer
Datei-Größe viel Speicherplatz beanspruchen und deren Verwendung die
Arbeitsgeschwindigkeit bei weniger leistungsstarken Computern spürbar verringern kann.
Eine solche Universal-Schriftart ist z.B. im Lieferumfang von MS-Office® (ab Version 2000)
enthalten, sie wird aber bei der Standardinstallation nicht installiert.
Die Schriftart heißt
Arial Unicode MS, beansprucht je nach Version bis zu 22 MB Speicherplatz
und kann von der Office-CD nach-installiert werden. Wenn sie installiert ist, werden die
meisten Unicode-Zeichen in dieser Schriftart angezeigt. Der Unicode-Zeichensatz beschreibt allerdings nicht, wie ein Zeichen auszusehen hat, sondern er definiert Zeichen und ihre Kodierung. Ein großer Teil der heute verwendeten Schriftzeichen ist schon mit zwei Byte kodierbar. Dieser Kodierungsraum ( code space ) enthält 65536 Zeichen und wird als Basic Multilingual Plane (BMP) bezeichnet. Für die Kodierung weiterer Zeichen sind mindestens 3 Byte notwendig, für dem gesamten 21-Bit Unicode Standard 4 Byte. Der Unicode wird über eine weitere Kodierung, → UTF, in eine neue Byte-Sequenz gebracht, die an die weiter verarbeitenden Programme weiter geleitet wird. Es existieren mehrere Formate des UTF: UTF-5, UTF-7, → UTF-8, UTF-16 und UTF-32. Am meisten verbreitet ist das → UTF-8 Format, das fast alle Browser, Textverarbeitungsprogramme usw. umsetzen können. Gleichzeitig dient die Angabe UTF-8 in meta -tags von Webseiten und den Kodierungseinstellungen der Browser der Kenntlichmachung des verwandten Zeichensatzes. Beliebige Schrift-Familien enthalten nur selten den halbwegs kompletten Unicode-Zeichensatz. Insbesondere dekorative Schriften decken in der Regel höchstens den Latin-1 Zeichensatz oder die ISO-8859 Gruppe ab. |
Ob Unicode verwendet werden kann, hängt von Betriebssystem und Software ab.
MS-Systeme sind ab Windows-2000 bzw. Windows-XP für Unicode ausgerüstet. Unicode wurde ursprünglich vom 'Unicode Consortium' entwickelt, dem u.a. diese Unternehmen angehörten: Apple Computer, Inc.; Digital Equipment Corporation; Hewlett-Packard Company; IBM Corporation; Microsoft Corporation; NeXT Software, Inc.; Novell, Inc.; Research Libraries Group; Silicon Graphics, Inc.; Spyglass, Inc.; Sun Microsystems Inc.; Sybase, Inc.; Xerox Corporation. 1991 - Unicode 1.0 1993 - Unicode 1.1 (Unification of the encoding of ISO 10646 and Unicode was achieved with this version) 1996 - Unicode 2.0 1997 - Unicode 2.1 2000 - Unicode 3.0 2001 - Unicode 3.1 2001 - Unicode 3.2 |
UTF-9 und UTF-18 |
|
|
Das Memo RFC 4042
mit dem bezeichnenden Datum 1.April 2005 wurde bisher noch nicht als Standard
anerkannt, enthält jedoch einige richtungsweisende Ideen für die Zukunft der
internationalen Kommunikation. UTF-9 ermöglicht die effiziente und sparsame Verwaltung von Unicode-Zeichen auf 9-Bit Computern, und zwar in der Form von 9-Bit 'nonets'. |
Das Dokument liefert Definitionen, Dokumentation und Beispiele für UTF-9 und UTF-18. Diese Technologie wird vom Marketing begeistert aufgenommen, da sich 9-Bit-PC ideal als konsequente Weiter-Entwicklung von 8-Bit-PC und ihren ebenso veralteten Familien-Mitgliedern (16-Bit, 32-Bit und 64-Bit) bewerben lassen. |
|
|
|
UTF-Demo
Webseite von UNICODE IDN-OSS(iDNS Open Source) IETF - Internet Engineering Task Force - iDNS (UTF-5) - Internationalized Domain Name, IMC - Internet Mail Consortium - iDNS (UTF-5), W3C - Multilingual Forms (UTF-8), MySQL - Character set support, |
|
|
|