Was ist UTF-8? Warum Emojis und Akzente zusätzlichen Platz beanspruchen
UTF-8 ist die Codierung, die das moderne Web ausführt, und wird von nahezu jeder Webseite, Datenbank und API verwendet. Meistens funktioniert es unsichtbar, aber es erklärt ein Rätsel, das die Leute verblüfft: Warum eine kurze Nachricht voller Emojis „zu groß“ für ein Feld sein kann, in das eine längere Nachricht mit einfachem Text passt. Hier wird UTF-8 einfach erklärt und erklärt, warum es wichtig ist.
Was UTF-8 ist
UTF-8 ist eine Möglichkeit, Textzeichen als Bytes darzustellen, die Einheiten, die Computer tatsächlich speichern und übertragen. Jedes eingegebene Zeichen muss zu einer Folge von Bytes werden, und UTF-8 ist das Standardsystem dafür. Das clevere Design besteht darin, dass die Breite variabel ist: Verschiedene Zeichen benötigen unterschiedliche Anzahlen von Bytes. Dadurch kann jedes Zeichen in jeder Sprache und jedes Emoji dargestellt werden, während der einfache englische Text kompakt bleibt. Es ist gerade deshalb zur vorherrschenden Kodierung geworden, weil es sowohl universell als auch effizient für allgemeinen Text ist.
Warum manche Zeichen mehr Bytes benötigen
Hier ist die Schlüsselidee. UTF-8 verwendet ein Byte für die Grundzeichen, die englischen Buchstaben, Ziffern und allgemeine Satzzeichen. Aber Zeichen außerhalb dieses Grundsatzes benötigen mehr: Die meisten lateinischen Buchstaben mit Akzent und viele Symbole benötigen zwei Bytes, ein großer Bereich einschließlich chinesischer, japanischer und koreanischer Zeichen benötigt drei Bytes und der Rest, einschließlich der meisten Emojis, benötigt vier Bytes. Die Bytegröße Ihres Textes hängt also ganz davon ab, welche Zeichen er enthält. Einfaches Englisch besteht aus einem Byte pro Zeichen; Emoji sind vier.
Warum das für Grenzen wichtig ist
Die variable Breite ist der Grund, warum die Zeichenanzahl und die Byteanzahl unterschiedlich sein können und warum das wichtig ist. Viele Grenzwerte, Datenbankfelder, Netzwerknutzlasten und einige API-Anforderungsgrößen werden in Bytes und nicht in Zeichen gemessen. In ein Feld mit 100 Byte passen 100 einfache englische Zeichen, aber nur 50 Zeichen, wenn es sich um Zwei-Byte-Akzentbuchstaben handelt, oder 25, wenn es sich um Vier-Byte-Emojis handelt. Genau aus diesem Grund kann eine optisch kurze, Emoji-lastige Nachricht als zu lang abgelehnt werden, während eine längere Klartextnachricht passt. Die Bytes, nicht die Zeichen, stoßen an die Grenze.
Die Emoji-Überraschung
Emojis verdienen besondere Aufmerksamkeit, da sie die größte Verwirrung stiften. Die meisten Emojis bestehen aus vier Bytes in UTF-8, also so viel Platz wie vier einfachen Buchstaben. Und einige Emojis werden durch die Kombination mehrerer Codepunkte erstellt: Eine Flagge, eine Hauttonvariante oder ein Familien-Emoji kann viele Bytes umfassen, manchmal mehr als ein Dutzend. Ein einzelnes sichtbares Emoji kann also weitaus mehr Platz einnehmen, als es den Anschein hat. Wenn eine kurze, mit Emojis gefüllte Nachricht jemals als zu lang abgelehnt wurde, ist diese Realität mit variabler Breite und mehreren Bytes der Grund dafür.
Der praktische Imbiss
Man muss selten direkt an UTF-8 denken, aber es zu kennen, erklärt das tatsächliche Verhalten. Wenn die Anzahl der Zeichen begrenzt ist, zählen Sie die Zeichen. Wenn es sich um Bytes handelt, denken Sie in vielen technischen Zusammenhängen daran, dass Akzente die Byte-Kosten verdoppeln und Emojis das Vierfache verdoppeln. Überprüfen Sie daher die tatsächliche Byte-Größe, wenn Ihr Text nicht einfaches Englisch ist. Wenn man sowohl die Zeichenanzahl als auch die Bytegröße gleichzeitig sieht, entfällt das Rätselraten und verhindert die verwirrende Ablehnung „Aber es sah kurz genug aus“.