Langzeichen und Multibyte-Zeichen wurden definiert, um das ursprüngliche „Zeichen“-Konzept der Computersprachen zu erweitern, das die Zuordnung eines Zeichens zu einem Byte Speicherplatz vorsah. Diese Zuordnung reichte jedoch für Sprachen wie zum Beispiel Japanisch nicht aus, da die Darstellung eines Zeichens in diesen Sprachen mehr als ein Byte Speicherplatz erfordert. Aus diesem Grunde wurde das Zeichen-Konzept um Multibyte-Zeichen und Langzeichen erweitert. Multibyte-Zeichen stellen Zeichen des erweiterten Zeichensatzes in zwei, drei oder mehr Bytes dar.
Multibyte-Zeichenketten können „Shift-Sequenzen“ enthalten, die die Bedeutung der nachfolgenden Multibyte-Codes verändern. Shift-Sequenzen können zum Beispiel umschalten zwischen verschiedenen Interpretationsmodi: Die ein-byte Shift-Sequenz 0200
kann festlegen, dass nachfolgende Byte-Paare als japanische Zeichen interpretiert werden, bzw. die Shift-Sequenz 0201
, dass nachfolgende Byte-Paare als Zeichen des ISO-Latin-1-Zeichensatzes interpretiert werden.
Programmier-Modell
Programme, die mit Multibyte-Zeichen arbeiten, können mit Hilfe der Amendment 1-Funktionen ebenso leicht realisiert werden, wie Programme, die das traditionelle Zeichenkonzept verwenden.
Dabei werden Multibyte-Zeichen oder -Zeichenketten, die aus einer externen Datei eingelesen werden, intern in ein wchar_t
-Objekt oder ein Feld vom Typ wchar_t
eingelesen. Bei dieser Leseoperation werden die Multibyte-Zeichen in das entsprechende Langzeichen konvertiert.
Die wchar_t
-Objekte können anschließend durch isw
xxx-Funktionen, wcstod
, wmemcmp
usw. bearbeitet werden.
Die resultierenden wchar_t
-Objekte werden dann durch Ausgabefunktionen wie put-wchar
, fputws
usw. ausgegeben.
Bei der Ausgabe werden die Langzeichen in die entsprechenden Multibyte-Zeichen konvertiert.
Hinweise zu Langzeichen
Ein Langzeichen ist definiert als der Codewert eines Objekts vom Typ wchar_t
(binär kodierter Integerwert), der einem Element des erweiterten Character-Sets entspricht.
Das Null-Langzeichen hat den Codewert Null.
Das Dateiende-Kriterium in Langzeichen-Dateien ist WEOF
.
Langzeichenkonstanten werden in der Form L“langzeichenkette“ geschrieben.
Hinweise zu dieser Implementierung
In dieser Version der C-Laufzeitbibliothek werden nur 1-Byte-Zeichen als Langzeichen unterstützt. Sie sind vom Typ wchar_t
, der intern auf den Typ long
abgebildet wird. Multibyte-Zeichen haben entsprechend auch immer die Länge 1 Byte.