Text sind Zahlen
Ein Computer speichert Text als Zahlen. Jedes Zeichen hat einen Codepunkt (der Buchstabe A ist 65, a ist 97, 0 ist 48), und eine Kodierung legt fest, wie aus dieser Zahl Bytes werden. ASCII deckt 128 Zeichen mit je einem Byte ab; Unicode deckt mehr als eine Million ab, und UTF-8 ist die Kodierung, die sie als ein bis vier Bytes schreibt und ASCII dabei unverändert lässt.
Hi ist also 72 und 105, binär 01001000 und 01101001, hex 48 69. Das é ist Codepunkt 233, wird aber als zwei Bytes gespeichert, C3 A9; das Häkchen ✓ sind drei Bytes, E2 9C 93; ein Emoji vier.
Wie UTF-8 einen Codepunkt packt
| Codepunkt-Bereich | Bytes | Bit-Anordnung |
|---|---|---|
| U+0000 – U+007F | 1 | 0xxxxxxx |
| U+0080 – U+07FF | 2 | 110xxxxx 10xxxxxx |
| U+0800 – U+FFFF | 3 | 1110xxxx 10xxxxxx 10xxxxxx |
| U+10000 – U+10FFFF | 4 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
Die führenden Bits des ersten Bytes sagen, wie lang die Sequenz ist, und jedes Folgebyte beginnt mit 10. Dieses Design lässt einen Decoder nach einem Fehler wieder aufsetzen und ist der Grund, warum man UTF-8-Text Byte für Byte durchsuchen kann.
ASCII-Referenz
Druckbares ASCII reicht von 32 (Leerzeichen) bis 126 (~). Ziffern sind 48–57, Großbuchstaben 65–90, Kleinbuchstaben 97–122. Der Unterschied zwischen Groß- und Kleinschreibung ist genau Bit 5 (Wert 32), weshalb c | 0x20 einen ASCII-Buchstaben kleinschreibt. Die Codes 0–31 sind Steuerzeichen: 9 ist Tab, 10 ist Line Feed, 13 ist Carriage Return, 27 ist Escape.
Fragen
Wie wandle ich Text von Hand in Binär um?
Den ASCII-Code jedes Zeichens nachschlagen (A = 65), diese Dezimalzahl in Binär umrechnen und auf 8 Bit auffüllen: 65 = 01000001. Nicht-ASCII-Zeichen müssen zuerst in UTF-8-Bytes gewandelt werden.
Warum wird aus einem Zeichen mehr als ein Byte?
Weil UTF-8 für alles außerhalb von ASCII 2, 3 oder 4 Bytes verwendet. é ist C3 A9, 日 ist E6 97 A5, 😀 ist F0 9F 98 80. Die Tabelle unter dem Tool zeigt das pro Zeichen.
Was ist das Binär des Buchstabens A?
01000001 (dezimal 65, hex 41). Das kleine a ist 01100001 (97, hex 61): dasselbe mit gesetztem Bit 5.
Warum gibt Binär-zu-Text einen Fehler?
Jede Gruppe muss ein Byte sein (8 Binärziffern oder ein Wert 0–255), und die Bytes müssen gültiges UTF-8 bilden. Ein einzelnes Byte über 127 oder ein Folgebyte ohne Startbyte ist kein gültiger Text.
Ist das dasselbe wie Base64?
Nein. Hier sehen Sie die tatsächlichen Bytes des Textes in einer lesbaren Basis. Base64 ist ein anderes, dichteres Schema, um beliebige Bytes als Text zu transportieren. Siehe das Base64-Tool.