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.
