Speicherbedarf String (UTF -8)
UTF-8 kodiert variabel mit 1–4 Byte pro Codepoint: Speicher = Zeichen · ByteProZeichen. Lateinische Buchstaben 1 Byte, Umlaute 2 Byte, CJK 3 Byte, Emoji bis 4 Byte.
Speicherbedarf String (UTF-8) berechnen
UTF-8 kodiert variabel mit 1–4 Byte pro Codepoint: Speicher = Zeichen · ByteProZeichen. Lateinische Buchstaben 1 Byte, Umlaute 2 Byte, CJK 3 Byte, Emoji bis 4 Byte.
- Speicher — Speicherbedarf
- Zeichen — Zeichenanzahl
- ByteProZeichen — Byte pro Zeichen
Worum geht es?
UTF-8 ist eine variable Längen-Kodierung für Unicode. Jeder Codepoint belegt zwischen 1 und 4 Byte:
- 1 Byte: ASCII (U+0000 bis U+007F) — englisches Alphabet, Ziffern, Steuerzeichen
- 2 Byte: Latin-Erweiterungen (Umlaute, Akzente), griechisch, kyrillisch, arabisch, hebräisch
- 3 Byte: CJK (Chinesisch, Japanisch, Koreanisch), die meisten anderen Schriften der BMP
- 4 Byte: Emoji, mathematische Symbole außerhalb der BMP, historische Schriften
Für eine Schätzung mittelt man ByteProZeichen über den Textinhalt: Speicher = Zeichen · ByteProZeichen.
Die Formel
Speicher = Zeichen · ByteProZeichen
Umstellungen:
Zeichen = Speicher / ByteProZeichen
ByteProZeichen = Speicher / ZeichenDie Variablen
| Symbol | Bedeutung | Einheit | Erklärung |
|---|---|---|---|
| Zeichen | Zeichenanzahl | — | Anzahl der Codepoints im String. |
| ByteProZeichen | Byte pro Zeichen | Byte | Durchschnittliche Bytes pro Zeichen (1–4). |
| Speicher | Speicherbedarf | Byte | Speicherbedarf in Byte. |
Minimal-Beispiel
Der String "Hallo Wörld" enthält 11 Zeichen, davon 1 Umlaut (2 Byte):
Speicher = 10 · 1 + 1 · 2
= 12 BytePraxis-Beispiele
Beispiel 1 — Deutscher Text
Ein Text mit 1000 Zeichen, im Schnitt 1,05 Byte pro Zeichen (wenige Umlaute):
Speicher = 1000 · 1,05
= 1050 ByteBeispiel 2 — Chinesischer Text
500 chinesische Zeichen à 3 Byte:
Speicher = 500 · 3
= 1500 ByteBeispiel 3 — Tweet mit Emoji
Ein Tweet aus 200 lateinischen Zeichen + 10 Emoji (à 4 Byte):
Speicher = 200 · 1 + 10 · 4
= 240 Byte