Multibyte-Zeichen

Überblick

Im ASCII-Zeichensatz hat jedes Zeichen eine Breite von genau einem Byte. Zur Zeit als C entwickelt wurde, war Speicher knapp und es war auch selbstverständlich, dass wer einen Computer bedient, das in englischer Sprache tut. In einem Byte kann man 256 Zeichen unterscheiden. Inzwischen möchte man jedoch aus einer Vielzahl von Zeichen auswählen, zum Beispiel auch griechische Buchstaben (Α & Ω), kyrillische Zeichen(И, Ш, Я) sogar einfaches Chinesisch ().

Beschreibung

Wie der Name bereits sagt, wird bei einem Multibyte-Zeichen mehr als ein Byte zur Kodierung eines Zeichens. Hierbei fordert der C-Standard nicht zwangsläufig eine Implementierung des UniCode - man darf also leider nicht von Unicode-Kodierung ausgehen. Es gibt auch speziellere Alphabete für chinesische, japanische und koreanische Texte. Dennoch wird Unicode häufig verwendet. UTF-8 besitzt so den Vorteil, dass der 7-Bit-ASCII-Zeichensatz unverändert übernommen werden. Das achte Bit wird hier zur Markierung benutzt, dass ein Zeichen folgt, das länger als 1 Byte ist. Diese Form der Multibyte-Kodierung hilft bei den häufig verwendeten Buchstaben, Ziffern und Satzzeichen mit einem einzelnen Byte auszukommen. Werden exotischere Zeichen verwendet, wird das Multibyte-Zeichen entsprechend länger. So ist ein Multibyte-Zeichen in UTF-8 zwischen 1 und 4 Byte lang.

Verwendung

Im Vergleich zu ASCII oder WideChars variiert also die Länge eines einzelnen Multibyte-Zeichens. Dies spart beim Speichern in der Regel Speicher; es verkompliziert dafür aber auch beispielsweise die Bestimmung der Anzahl von Zeichen in einem Text, bzw. umgekehrt: Möchte man 10 noch unbekannte Zeichen Speichern weiß muss man 40 Bytes reservieren, auch wenn die Zeichen später doch nur 10 Byte einnehmen.

Für die laufende Anwendung sind also WideChars einfacher, zum Speichern kann sich die Multibyte-Kodierung lohnen.

Die C-Library stdlib liefert Funktionen, um Zeichen von Multibyte nach Breitzeichen (WideChars) und zurück zu überführen oder die Länge eines Multibyte-Zeichen zu bestimmen.

siehe auch