Zeichen und Bytes sind nicht dasselbe
Die Zeichenzahl ist die Zahl der Zeichen, die ein Mensch sieht; Bytes sind der Platz, den der Text beim Speichern im Computer belegt. Dasselbe Zeichen kann je nach Zeichenkodierung (der Regel, die Zeichen in Zahlen übersetzt) unterschiedlich viele Bytes belegen. Lateinische Buchstaben und Ziffern haben in fast allen Kodierungen 1 Byte, koreanisches Hangul dagegen je nach Kodierung 2 oder 3 Bytes.
UTF-8: der heutige Standard
UTF-8 ist die Kodierung von Webseiten und den meisten modernen Programmen. Je nach Größe der Unicode-Nummer (Codepunkt) werden 1 bis 4 Bytes verwendet (RFC 3629).
| Codepunkt-Bereich | Bytes | Beispiele |
|---|---|---|
| U+0000 ~ U+007F | 1 | Lateinische Buchstaben, Ziffern, einfache Symbole |
| U+0080 ~ U+07FF | 2 | é, ñ, griechische, kyrillische und arabische Schrift |
| U+0800 ~ U+FFFF | 3 | Hangul, Kanji/Hanzi, Kana |
| U+10000 ~ U+10FFFF | 4 | Die meisten Emojis, historische Schriften |
Alle vorkomponierten Hangul-Silben (가 bis 힣, U+AC00 bis U+D7A3) liegen im dritten Bereich und belegen in UTF-8 daher 3 Bytes pro Zeichen. So hat ‚안녕하세요‘ (Hallo) 5 Zeichen und 15 Bytes.
UTF-16
UTF-16, das intern in JavaScript, Java und Windows verwendet wird, speichert die meisten Zeichen mit 2 Bytes und Zeichen ab U+10000 wie Emojis mit 4 Bytes (Surrogatpaar). Deshalb zählt die Stringlänge in JavaScript ein Emoji als 2.
EUC-KR: koreanische Kodierung mit vorkomponierten Silben
EUC-KR beruht auf dem koreanischen Industriestandard KS X 1001. Lateinische Buchstaben und Ziffern haben 1 Byte, Zeichen aus KS X 1001 haben 2 Bytes. KS X 1001 enthält 2.350 häufig verwendete Hangul-Silben, 4.888 Hanja (chinesische Schriftzeichen), Kana, griechische und kyrillische Buchstaben sowie zahlreiche Symbole.
Das Problem: Von den 11.172 modernen Hangul-Silben sind nur 2.350 enthalten. Nicht aufgeführte Silben wie ‚똠‘, ‚햏‘ oder ‚뷁‘ lassen sich im einfachen Zwei-Byte-EUC-KR nicht darstellen. Zwar gibt es im Anhang des Standards ein Kombinationsverfahren mit 8 Bytes, doch kaum ein Programm unterstützt es; meist wird das Zeichen zu ‚?‘ oder es tritt ein Fehler auf.
CP949: erweiterte Kodierung
CP949 (Microsofts „Unified Hangul Code“) erweitert EUC-KR und bildet alle 11.172 modernen Hangul-Silben mit 2 Bytes ab. Da es die koreanische Standard-Codepage von Windows war, ist es in älteren koreanischen Dokumenten und Systemen weit verbreitet. Die übliche Faustregel „Latein 1 Byte, Hangul 2 Bytes“ stammt größtenteils von dieser Kodierung.
Wann Bytes wichtig sind
- SMS: Koreanische SMS-Dienste geben für eine Kurznachricht (SMS) häufig 90 Bytes an und zählen Hangul mit 2 Bytes – das sind etwa 45 koreanische Zeichen. Bei Überschreitung wird daraus eine Langnachricht (LMS), was die Kosten ändern kann; die genaue Grenze entnehmen Sie den Angaben Ihres Dienstes.
- Datenbankfelder: Wird die Länge wie bei Oracles VARCHAR2 in Bytes gemessen, belegen 20 lateinische und 20 koreanische Zeichen unterschiedlich viel Platz. In einer UTF-8-Datenbank benötigt eine Hangul-Silbe 3 Bytes.
- Behörden- und Bankformulare: Formulare, die an ältere Systeme angebunden sind, begrenzen Eingabefelder mitunter in Bytes.
So rechnet dieses Tool
UTF-8-Bytes werden exakt aus dem Codepunkt jedes Zeichens berechnet. Für EUC-KR und CP949 prüft das Tool anhand der tatsächlichen Zeichentabelle der jeweiligen Kodierung, ob sich jedes Zeichen mit 2 Bytes darstellen lässt. Nicht darstellbare Zeichen (Emojis, nicht aufgeführte Hangul-Silben usw.) werden meist durch ein ‚?‘ mit einem Byte ersetzt und daher als 1 Byte gezählt; ihre Anzahl wird gesondert angezeigt. Wählen Sie im Bewerbungsmodus als Basis „Bytes (Hangul = 2)“, wird nach CP949 gezählt.
Stand: 2026-09-23