UTF-8 Bytes zählen

UTF-8 Bytes zählen: Der Byte-Zähler zeigt, wie viele Bytes, Zeichen und UTF-16-Einheiten ein Text belegt und ob er in VARCHAR, TEXT oder einen Dateinamen passt.

–

 

Passt der Text?

GrenzeGilt fürIhr TextErgebnis
Auf Ihre Grenze gekürzt

Bytes je Zeichen

ZeichenCodepointBytesUTF-8 (Hex)

Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

Zeichen, Bytes und UTF-16

Die Länge eines Textes hängt davon ab, was man zählt. Ein UTF-8 Byte-Zähler zählt Bytes: Buchstaben aus ASCII brauchen eines, Umlaute und ß zwei, das Euro-Zeichen drei und Emojis vier. JavaScript zählt mit length dagegen UTF-16-Einheiten, in denen ein Emoji zwei Einheiten belegt. Und was Menschen als ein Zeichen sehen, etwa eine Flagge oder ein Emoji mit Hautfarbe, kann aus mehreren Codepoints bestehen. Dieses Werkzeug zeigt alle drei Zahlen und so die String-Länge in Bytes, Zeichen und UTF-16-Einheiten.

Wichtig ist das bei Datenbanken und Dateisystemen. In MySQL zählt VARCHAR(255) Zeichen, mit der Kodierung utf8mb4 also bis zu 1.020 Bytes; TINYTEXT und TEXT begrenzen dagegen Bytes. Die ältere MySQL-Kodierung utf8 (utf8mb3) kann keine 4-Byte-Zeichen speichern, Emojis führen dort zu Fehlern oder Fragezeichen. Oracle zählt bei VARCHAR2 standardmäßig Bytes, SQL Server bei nvarchar UTF-16-Einheiten. Dateinamen dürfen unter Linux (ext4) 255 Bytes lang sein, unter Windows (NTFS) 255 UTF-16-Einheiten.

Wenn ein Text in eine feste Byte-Grenze passen muss, kürzt das Werkzeug ihn so, dass kein Zeichen mitten in seinen Bytes abgeschnitten wird. Ein abgeschnittenes Mehrbyte-Zeichen würde sonst als Ersatzzeichen � erscheinen. Zusammengesetzte Emojis können beim Kürzen trotzdem zerfallen, weil sie aus mehreren Codepoints bestehen; prüfen Sie das Ende des gekürzten Textes.

Anleitung: UTF-8 Bytes zählen in 5 Schritten

  1. Den Text in das Feld „Text“ einfügen oder mit „Beispiel“ einen Probetext laden.
  2. Unter „Ihre Grenze in Bytes“ das Limit eintragen, etwa einer Datenbankspalte oder eines Dateinamens.
  3. In „Passt der Text?“ ablesen, wie viele Bytes, Zeichen und UTF-16-Einheiten der Text belegt.
  4. Bei Bedarf den auf Ihre Grenze gekürzten Text kopieren, in dem kein Zeichen mitten in seinen Bytes abgeschnitten ist.
  5. In „Bytes je Zeichen“ nachsehen, welche Zeichen mehr als ein Byte brauchen.

Typische Anwendungsfälle

  • Datenbankfehler: Herausfinden, warum ein Eintrag mit Emojis in eine MySQL-Spalte mit utf8 statt utf8mb4 nicht passt.
  • Feldlängen planen: Prüfen, ob Produktnamen mit Umlauten in eine Spalte mit Byte-Grenze wie TINYTEXT passen.
  • Schnittstellen mit Byte-Limit: Texte für SMS-Gateways, Push-Nachrichten oder Header so kürzen, dass sie die Grenze einhalten.
  • Fehlersuche im Code: Verstehen, warum JavaScript mit length eine andere String-Länge meldet als die Datenbank.
Fragen

Häufige Fragen

Wie viele Bytes hat ein Umlaut in UTF-8?

Zwei. ä, ö, ü und ß liegen zwischen U+0080 und U+07FF und werden in UTF-8 mit zwei Bytes kodiert. ASCII-Zeichen brauchen eines, das Euro-Zeichen drei, Emojis vier.

Zählt VARCHAR(255) Zeichen oder Bytes?

In MySQL und PostgreSQL Zeichen. Mit utf8mb4 kann eine VARCHAR(255)-Spalte deshalb bis zu 1.020 Bytes belegen. In Oracle zählt VARCHAR2 standardmäßig Bytes.

Warum ist utf8mb4 nötig?

Die MySQL-Kodierung utf8 (utf8mb3) speichert höchstens drei Bytes pro Zeichen. Emojis und einige seltene Schriftzeichen brauchen vier Bytes und gehen sonst verloren.

Warum meldet JavaScript eine andere Länge?

String.length zählt UTF-16-Einheiten. Ein Emoji ergibt dort 2, obwohl es ein Zeichen und vier UTF-8-Bytes sind.

Was ist ein Graphem?

Das, was Leser als ein Zeichen wahrnehmen. Ein Familien-Emoji oder eine Flagge besteht aus mehreren Codepoints, wird aber als ein Graphem angezeigt.

Wie viele Zeichen passen in 255 Bytes?

Bei reinem ASCII-Text 255 Zeichen, bei Umlauten mit je zwei Bytes nur 127 und bei Emojis mit je vier Bytes 63. Gemischte Texte liegen dazwischen; das Werkzeug zeigt den genauen Wert.

Wie zähle ich die Bytes eines Strings im Code?

In JavaScript mit new TextEncoder().encode(text).length, in Python mit len(text.encode('utf-8')). Beide liefern die Länge in UTF-8-Bytes, nicht in Zeichen.

Weitere Werkzeuge

Das könnte auch helfen

Alle 358 Werkzeuge