Breitzeichen (WideChars)

Ü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

Ein Breitzeichen ist, wie der Name bereits sagt, breiter als 1 Byte, also beispielsweise 2 oder 4 Byte. 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 und als UTF-16 oder UTF-32 implementiert.

Die Zeichenbreite eines einzelnen Zeichen ist damit - im Unterschied zum Multibyte - für alle Zeichen gleich.

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 WideChar und zurück zu überführen oder die Länge eines Multibyte-Zeichen zu bestimmen.

siehe auch