Hans Wittwer

Geschichten, die das Leben schrieb

Nachrichtentechnik

Unicode

🏁

Schlaue Köpfe wollten einen einzigen Zeichensatz für das ganze Universum bauen. Stolzer Ansatz, aber wie soll das gehen? Mehr Bits, was sonst? Sie nannten den Zeichensatz sinnigerweise Unicode.

Die Kerle haben keine neuen Zeichen erfunden, nur alle, die sie finden konnten, in einen einzigen Code gepackt. Wie viele Zeichen sind denn das? Angefangen haben sie mit zwei Byte pro Zeichen, das ergibt 216 = 65'536 Zeichen. Die ersten 128 Zeichen haben sie unverändert aus dem ASCII-Code übernommen. Die Erfinder haben alle anderen Zeichen anschliessend eingebaut.

65'536 Zeichen reichten nicht für das ganze Universum. Menschen aus fernen Ländern haben reklamiert und wollten ihre Hieroglyphen auch dabeihaben. Chinesische, japanische, indische und arabische Zeichen, Emoticons und ähnliche Symbole wollten auch dabei sein.

Die findigen Köpfe haben weiter gegrübelt. Den 16 Bit (65'536 Zeichen) sagten sie «Ebene». Mit 5 Bit vor der Ebene haben sie 25 = 32 Ebenen erfunden. Von diesen 32 Ebenen sind 17 vorgesehen und 6 heute verwendet. Ein Unicode-Zeichen ist demnach 5 + 16 = 21 Byte lang. Und weil 17 Ebenen vorgesehen wurden, sind 17 × 65'536 = 1'114'112 Zeichen möglich. Warum nur 5 Bit für die Ebenen Nummer? Das wird später beim UTF-8-Format klar.

DEC HEX Zeichen
0 0 Tiefstes
0 0 Erstes in Ebene 0
65'535 FFFF Letztes Ebene 0
593'011 9 0C73 3'187tes in Ebene 9
1'114'111 10 FFFF Letztes in Ebene 17
1'114'111 10 FFFF Höchstes

Etwa ASCII 1000001 entspricht Unicode 00000 00000000 01000001

Heute umfasst der Unicode also 17 Ebenen à 65'536 Zeichen. 17 · 2 Byte = 17 · 216 = 17 · 65'536 = 1'114'112 Zeichen und es hätte noch Platz für weitere 15 Ebenen. Wenn das nicht reichen sollte, treten die findigen Köpfe mit Garantie in Aktion und werden eine Lösung finden. Eventuell sind sie schon dran. Die 1'114'112 Unicode-Zeichen liste ich nicht auf, sonst bist Du lange am Blättern. Schaue im Internet bei Unicode rein, wenn Du es wissen möchtest.

Beispiele von gängigen Unicode-Zeichen umgesetzt in das UTF-8-Format:
Details zum UTF-8-Format folgen.
Zeichen Unicode UTF-8
  DEC HEX DEC HEX
A 65 41 65 41
£ 163 A3 49827 C2A3
¤ 164 A4 49828 C2A4
© 169 A9 49833 C2A9
® 174 AE 49838 C2AE
° 176 B0 49840 C2B0
² 178 B2 49842 C2B2
³ 179 B3 49843 C2B3
´ 180 B4 49844 C2B4
µ 181 B5 49845 C2B5
¼ 188 BC 49852 C2BC
½ 189 BD 49853 C2BD
¾ 190 BE 49854 C2BE
± 177 B1 49841 C2B1
µ 181 B5 49845 C2B5
· 183 B7 49847 C2B7
Å 197 C5 50053 C385
Ç 199 C7 50055 C387
× 215 D7 50071 C397
Ø 216 D8 50072 C398
ñ 241 F1 50097 C3B1
÷ 247 F7 50103 C3B7
ø 248 F8 50104 C3B8
Ω 937 3A9 52905 CEA9
λ 955 3BB 52923 CEBB
φ 966 3C6 53126 CF86
ϖ 982 3D6 53142 CF96
8224 2020 57984 E280
8230 2026 57984 E280
8240 2030 57984 E280
8364 20AC 57986 E282
8709 2205 57992 E288
8721 2211 57992 E288
8730 221A 57992 E288
8746 222A 57992 E288
8747 222B 57992 E288
8773 2245 57993 E289
8800 2260 57993 E289
8804 2264 57993 E289
8805 2265 57993 E289

Die Knacknuss war, wie man die Unicode-Zeichen in eine Datei packt. Zwei verschiedene Dateien (1-Byte-ASCII und 3-Byte-Unicode) lagen nahe. Zwei Dateien wollte man nicht. Die reine ASCII-Datei wollte man beibehalten. Wie gestaltet man nun eine Datei, damit die 1-Byte gewohnten Systeme unberührt weiterarbeiten können und alle Unicode-Zeichen trotzdem drin sein können und die Datei schlank bleibt?

Die geniale Lösung heisst UTF-8 Format

Ja, ich weiss, es gibt noch andere Formate. UTF‑8 hat es mir angetan, weil ich im Internet «zu Hause» bin. Mich interessiert das, was ich selbst anwende und als praktisch empfinde.