====== Breitzeichen (WideChars) ====== ===== Überblick ===== Im [[theory:encoding:ascii|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 ([[http://www.epochtimes.de/articles/2008/01/30/232659.html|信]]). ===== 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 [[http://www.unicode.org|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 [[WideChar|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 [[WideChar|WideChars]] einfacher, zum Speichern kann sich die Multibyte-Kodierung lohnen. Die C-Library [[c:lib:stdlib:start|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 ===== [[theory:start#Kodierung|Encoding]]: [[theory:encoding:MultiByte]], [[theory:encoding:ASCII]] \\ [[c:lib:stdlib:start|C-StdLibrary]]: [[c:lib:stdlib:mbtowc()]], [[c:lib:stdlib:wctomb()]], [[c:lib:stdlib:mbstowcs()]], [[c:lib:stdlib:wcstombs()]]