Das Internet hat eine neue Idee für alten Text, und sie kommt mit einem Namen, der wie ein Witz klingt: UTF-8000. Es ist ein Vorschlag für eine unbegrenzte Version von UTF-8, der Kodierung, die die meisten Texte antreibt, die Sie online lesen. Die Idee ist einfach: UTF-8000 würde es Ihnen ermöglichen, Zeichenketten beliebiger Länge zu schreiben, ohne eine Obergrenze für die Anzahl der Bytes festzulegen, die ein einzelnes Zeichen umfassen kann.
Der Vorschlag ist ein eigenständiges Projekt, kein offizielles Dokument des Unicode Consortium. Er bietet eine Referenzimplementierung und wird als eine spielerische Art gefördert, darüber nachzudenken, wie Kodierungen funktionieren. Der Ersteller, der eindeutig mit der Geschichte von UTF-8 vertraut ist, argumentiert, dass das Design bereits die Saat für eine solche Erweiterung enthält. Die Frage ist, ob die Idee ein cleverer Hack oder ein Konzept ohne praktische Zukunft ist.
Die Zwei Sonderfälle
Der Kernanspruch ist, dass UTF-8000 keine neuen Sonderfälle einführt. Das ist ein erhebliches Versprechen. Der Vorschlag besagt, dass es nur zwei Sonderfälle gibt, die von UTF-8 selbst übernommen wurden, und beide sind geringfügig:
- ASCII, das wie-ist behandelt wird.
- 2-Byte UTF-8, das 4 obligatorische Content-Bits zur Überprüfung auf überlange Kodierung hat, anstatt 5 für alle längeren Längen.
Der Vorschlag macht deutlich, dass die beiden Fälle die einzigen Ausnahmen sind. Alles andere folgt einem klaren, vorhersehbaren Muster.
Was der Vorschlag eigentlich tut
Der Hauptbeitrag, so der Vorschlag, ist die Klärung, wie die höchsten Bits des ersten Bytes einer UTF-8-Codeeinheit aufgeteilt werden. Der Vorschlag teilt diese Bits in Self-Synchronisation-Bits und Start-Bits auf. Anschließend wird erklärt, wie die Start-Bits über Fortsetzungsbytes verteilt werden, um beliebig große Codeeinheiten zu unterstützen.
Das Beispiel im Vorschlag ist eine 22-Byte-Codeeinheit. Das vierte Byte ist das interessante: es ist ein Fortsetzungsbyte, ein Startbyte, das finale Startbyte und es hat Content-Bits, aber nur einige der obligatorischen Content-Bits. Diese Bits werden zwischen dem finalen Startbyte und dem ersten Nicht-Start-Byte verteilt. Der Vorschlag nennt das aufregend, was eine zutreffende Beschreibung für ein Byte ist, das so viele Aufgaben gleichzeitig erledigt.
Die Geschichte des Designs von UTF-8
Das Dokument widmet sich der Geschichte. Es weist darauf hin, dass der früheste Entwurf von UTF-8 ein sechs-Byte-Startbyte verwendete, das wie 111111xx aussah. Das wurde einige Tage später zu 1111110x geändert, was sicherstellte, dass die Anzahl der Inhaltsbits kein Sonderfall war und Raum für Erweiterungen ließ.
Das Dokument argumentiert, dass diese Design-Weitsicht der Grund dafür ist, dass UTF-8 überhaupt erweitert werden kann. Es bezeichnet UTF-8 als „das Schlussstück der Unix-Philosophie“. Die Idee ist, dass die Architektur der Kodierung von Anfang an sorgfältig geplant wurde und dass diese Planung die Tür für eine solche Erweiterung öffnete.
Das Dokument würdigt Ken Thompson und Rob Pike für die ursprüngliche UTF-8-Architektur. Es zitiert auch den FSS-UTF-Entwurf von Dave Prosser und anderen als das frühere Design, das UTF-8 ersetzen sollte. Der FSS-UTF-Entwurf verwendete eine dreibyte-Struktur wie 110xxxxx 1xxxxxxx 1xxxxxxx, die ohne vorherigen Kontext keine Unterscheidung zwischen ersten Bytes und Fortsetzungsbytes treffen konnte. UTF-8 behob das, indem es die beiden Arten von Bytes voneinander trennte.
Die Mathematik hinter der Kodierung
Das Dokument nennt die Zahlen für Inhaltsbits. Für eine n-Byte-Code-Einheit beträgt die Anzahl der Inhaltsbits 5n+1, und die Anzahl der obligatorischen Inhaltsbits beträgt ebenfalls 5n+1. Der Anteil der Inhaltsbits in einer Code-Einheit nähert sich 5/8 oder 62,5 %, wenn n wächst. Für ASCII beträgt der Anteil 7/8 oder 87,5 %, da es sich um eine ein-Byte-Code-Einheit handelt.
Das Dokument weist darauf hin, dass das Limit ungleich Null ist und nicht von n abhängt. Das ist die Art von Detail, die Kodierer lächeln lässt.
Warum es vielleicht keine Rolle spielt
Das Dokument ist eine unterhaltsame akademische Übung, aber kein ernster Vorschlag des Unicode Consortium. Es ist ein eigenständiges Projekt und wird so behandelt. Die Tatsache, dass es auf Hacker News einen beachtlichen Wert erreicht hat, ist ein Zeichen von Neugier, aber kein Zeichen der Akzeptanz.
Die beiden Sonderfälle sind gering. Das Design ist sauber. Aber die Frage, ob dies der „kanonische, korrekte Weg ist, UTF-8 zu erweitern“, ist Geschmackssache. Das Dokument argumentiert, dass dies der Fall ist, aber es ist nicht die einzige mögliche Erweiterung. Es gibt abgelehnte Alternativen, wie ASCVI, das als eine Version von UTF-8 mit 6-Bit-ASCII beschrieben wird. Diese Version ist eine der Alternativen, die das Dokument erwähnt, anstatt sie zu befürworten.
Das Urteil über UTF-8000
Der Vorschlag ist clever. Er ist gut argumentiert. Er respektiert die Geschichte der Kodierung, die er erweitert. Aber er ist auch nur ein Spielzeug, kein Standard. Die Tatsache, dass er so sauber vorgeschlagen werden kann, ist ein Kompliment für das Design von UTF-8. Die Tatsache, dass er wahrscheinlich nicht übernommen wird, ist ein Kompliment für die Leute, die sich bereits für UTF-8 entschieden haben.
Der Vorschlag lohnt sich allein wegen des Geschichtsunterrichts zu lesen. Er erklärt den FSS-UTF-Entwurf, die Wahl der Selbstsynchronisationsbits und die Sorgfalt, die in das ursprüngliche Design einfloss. Er ist eine Erinnerung daran, dass der Text auf Ihrem Bildschirm das Ergebnis jahrzehntelanger sorgfältiger Planung ist und dass die Leute, die ihn erstellt haben, dieselben Leute sind, die Unix erstellt haben.
Die Idee von UTF-8000 ist eine nette Idee. Es ist ein gutes eigenständiges Projekt. Es ist kein Vorschlag, der etwas ändern wird. Aber es ist ein gutes Beispiel dafür, wie Ideen über Text weiterleben, selbst wenn die Standards bereits geschrieben wurden.
Quellenmaterial: „UTF-8000: Unlimited UTF-8“, jb2170.com.
Das Notizbuch abonnieren.
Die besten Geschichten des Tages und jedes neue Urteil, in klarem Deutsch, um sieben im Postfach. Eine Mail am Tag, nicht mehr.

