Nachrichtentechnik
Unicode
| Nachrichtentechnik - Unicode | |
| ← ANSI-Code | UTF-8 Format → |
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. 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 UFT-8-Format klar.
| Binär / Dual | Dezimal | Hexadezimal | Klartext |
| 00000 00000000 00000000 | 0 | 0 | Tiefstes Unicode Zeichen |
| 00000 00000000 00000000 | 0 | 0 | Erstes Zeichen in Ebene 0 |
| 00000 11111111 11111111 | 65'535 | FFFF | Letztes Zeichen in Ebene 0 |
| 01001 00001100 01110011 | 593'011 | 9 0C73 | 3'187tes Zeichen in Ebene 9 |
| 10000 11111111 11111111 | 1'114'111 | 10 FFFF | Letztes Zeichen in Ebene 17 |
| 10000 11111111 11111111 | 1'114'111 | 10 FFFF | Höchstes Unicode-Zeichen |
Beispiel: A = ASCII 1000001 = Unicode 00000 00000000 01000001
Heute umfasst der Unicode also 17 Ebenen à 65'536 Zeichen. 17 x 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's 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 | ||||||||
| Binär | Dez | Hex | Binär | Dez | Hex | |||||
| A | 00000000 | 01000001 | 65 | 41 | 01000001 | 65 | 41 | |||
| £ | 00000000 | 10100011 | 163 | A3 | 11000010 | 10100011 | 49827 | C2A3 | ||
| ¤ | 00000000 | 10100100 | 164 | A4 | 11000010 | 10100100 | 49828 | C2A4 | ||
| © | 00000000 | 10101001 | 169 | A9 | 11000010 | 10101001 | 49833 | C2A9 | ||
| ® | 00000000 | 10101110 | 174 | AE | 11000010 | 10101110 | 49838 | C2AE | ||
| ° | 00000000 | 10110000 | 176 | B0 | 11000010 | 10110000 | 49840 | C2B0 | ||
| ² | 00000000 | 10110010 | 178 | B2 | 11000010 | 10110010 | 49842 | C2B2 | ||
| ³ | 00000000 | 10110011 | 179 | B3 | 11000010 | 10110011 | 49843 | C2B3 | ||
| ´ | 00000000 | 10110100 | 180 | B4 | 11000010 | 10110100 | 49844 | C2B4 | ||
| µ | 00000000 | 10110101 | 181 | B5 | 11000010 | 10110101 | 49845 | C2B5 | ||
| ¼ | 00000000 | 10111100 | 188 | BC | 11000010 | 10111100 | 49852 | C2BC | ||
| ½ | 00000000 | 10111101 | 189 | BD | 11000010 | 10111101 | 49853 | C2BD | ||
| ¾ | 00000000 | 10111110 | 190 | BE | 11000010 | 10111110 | 49854 | C2BE | ||
| ± | 00000000 | 10110001 | 177 | B1 | 11000010 | 10110001 | 49841 | C2B1 | ||
| µ | 00000000 | 10110101 | 181 | B5 | 11000010 | 10110101 | 49845 | C2B5 | ||
| · | 00000000 | 10110111 | 183 | B7 | 11000010 | 10110111 | 49847 | C2B7 | ||
| Å | 00000000 | 11000101 | 197 | C5 | 11000011 | 10000101 | 50053 | C385 | ||
| Ç | 00000000 | 11000111 | 199 | C7 | 11000011 | 10000111 | 50055 | C387 | ||
| × | 00000000 | 11010111 | 215 | D7 | 11000011 | 10010111 | 50071 | C397 | ||
| Ø | 00000000 | 11011000 | 216 | D8 | 11000011 | 10011000 | 50072 | C398 | ||
| ñ | 00000000 | 11110001 | 241 | F1 | 11000011 | 10110001 | 50097 | C3B1 | ||
| ÷ | 00000000 | 11110111 | 247 | F7 | 11000011 | 10110111 | 50103 | C3B7 | ||
| ø | 00000000 | 11111000 | 248 | F8 | 11000011 | 10111000 | 50104 | C3B8 | ||
| Ω | 00000011 | 10101001 | 937 | 3A9 | 11001110 | 10101001 | 52905 | CEA9 | ||
| λ | 00000011 | 10111011 | 955 | 3BB | 11001110 | 10111011 | 52923 | CEBB | ||
| φ | 00000011 | 11000110 | 966 | 3C6 | 11001111 | 10000110 | 53126 | CF86 | ||
| ϖ | 00000011 | 11010110 | 982 | 3D6 | 11001111 | 10010110 | 53142 | CF96 | ||
| † | 00100000 | 00100000 | 8224 | 2020 | 11100010 | 10000000 | 10100000 | 57984 | E280 | |
| … | 00100000 | 00100110 | 8230 | 2026 | 11100010 | 10000000 | 10100110 | 57984 | E280 | |
| ‰ | 00100000 | 00110000 | 8240 | 2030 | 11100010 | 10000000 | 10110000 | 57984 | E280 | |
| € | 00100000 | 10101100 | 8364 | 20AC | 11100010 | 10000010 | 10101100 | 57986 | E282 | |
| ∅ | 00100010 | 00000101 | 8709 | 2205 | 11100010 | 10001000 | 10000101 | 57992 | E288 | |
| ∑ | 00100010 | 00010001 | 8721 | 2211 | 11100010 | 10001000 | 10010001 | 57992 | E288 | |
| √ | 00100010 | 00011010 | 8730 | 221A | 11100010 | 10001000 | 10011010 | 57992 | E288 | |
| ∪ | 00100010 | 00101010 | 8746 | 222A | 11100010 | 10001000 | 10101010 | 57992 | E288 | |
| ∫ | 00100010 | 00101011 | 8747 | 222B | 11100010 | 10001000 | 10101011 | 57992 | E288 | |
| ≅ | 00100010 | 01000101 | 8773 | 2245 | 11100010 | 10001001 | 10000101 | 57993 | E289 | |
| ≠ | 00100010 | 01100000 | 8800 | 2260 | 11100010 | 10001001 | 10100000 | 57993 | E289 | |
| ≤ | 00100010 | 01100100 | 8804 | 2264 | 11100010 | 10001001 | 10100100 | 57993 | E289 | |
| ≥ | 00100010 | 01100101 | 8805 | 2265 | 11100010 | 10001001 | 10100101 | 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 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 angwende und als praktisch empfinde.
| ← ANSI-Code | UTF-8 Format → |
| Nachrichtentechnik - Unicode | |
