Wie viele Zeichen beinhaltet der Unicode (UTF-8)?
Hi,
ich habe eine Frage zum Unicode, denn ich habe mir notiert, dass der Unicode -> UTF-8 einen Zeichensatz von 2^32 Zeichen hat.
Kann das stimmen? Falls nicht, wie viele Zeichen hat der Unicode? (2^??)
2 Antworten
Unicode ist sehr, sehr groß. So wie der Standard angelegt ist, bietet er Platz für 2²⁰ (über eine Million) Codepoints, von denen allerdings viele niemals mit Zeichen belegt werden dürfen (so ist z.B. ⅛ des Codespace als “private use area” permanent unbelegt). Insgesamt bleiben ca. 975000 Codepoints für Zeichen übrig.
Das Design des Standard macht es aber ohne größere Probleme möglich, auf bis zu 2³² Zeichen (ca. 4 Milliarden) aufzustocken. Das ist die Grenze, die der Algorithmus hinter UTF-8 setzt; will man den aufgeben, dann wären auch weitere Vergrößerungen denkbar.
Aktuell hat Unicode Unterstützung für so gut wie jede heute noch gebrauchte Schrift und die überwältigende Mehrzahl der historischen Schriften; dazu wurden weniger als 140000 Zeichen belegt.
Unicode ist aber nicht nur eine Liste von Zeichen; dazu kommen noch standardisierte Verfahren zu Font Rendering, Textsatz und Texterkennung. Das gibt es sehr kompliziertes Konvolut von Algorithmen und Verfahren, die aufeinander aufbauen. Wie gut das Zeug funktoniert, merkt man daran, daß man als Benutzer kaum etwas von der Komplexität des Standards merkt.
Wer sich erinnern kann, wie grauenvoll es noch vor 20 Jahren war, wird die Arbeit des Unicode-Konsortiums nicht gering schätzen. Damals war es noch eine erstklassige Peinigung, wenn man nur verschiedene europäische Șṗřāćħêņ in einem Dokument mischen wollte, ganz zu schweigen von griechisch, arabisch oder gar — horribile dictu — indischen oder südostasiatischen Schriften. Heute kann ich das ohne Probleme, sogar auf gutefrage.net.
Unicode bietet Raum für 1114112 Codepunkte, das ist sozusagen der Vorrat an möglichen Nummern für Schriftzeichen. Bisher ist für 136755 Zeichen ein solcher Codepunkt vergeben.
UTF-8 ist nur eine von mehreren Methoden, die Codepunkte mit Bitmustern auszudrücken. Ein- und dasselbe Zeichen und sein Unicode-Codepunkt kann auf verschiedene Weise binär codiert werden. Je nachdem, ob es mehr auf effiziente Speicherung, Verarbeituing oder Transport der Zeichenfolgen ankommt.
https://de.wikipedia.org/wiki/Unicode (Abschnitt Codepunkte und Zeichen)
https://en.wikipedia.org/wiki/Unicode (Abschnitt Versions)
Diese Zahl ist eigentlich noch um die “private use areas” zu korrigieren. Die enthalten zwar Zeichen, aber ohne Attribute — man kann sie also nur nutzen, wenn dem Empfänger von vorneherein klar ist, wie er die Codepoints zu interpretieren hat.
Berichtigung: Es sind einige Codepunkte weniger, nämlich 1111998, die für Zeichen genutzt werden können. Die anderen, die dafür nicht zur Verfügung stehen, dienen als so etwas wie Metasymbole für interne Zwecke des Unicodes selbst.