7.9 Nationale contra internationale Zeichensätze
 
Der ASCII-Zeichensatz (American Standard Code for Information Interchange) wurde von US-amerikanischen Ingenieuren entwickelt. Zur damaligen Zeit wurde als achtes Bit das Paritätsbit benutzt, womit nur noch sieben Bits zur Verfügung standen; also gab es Platz für 128 Zeichen und Sonderzeichen.
Nun fehlte der Platz für westeuropäische und slawische Zeichen (von der japanischen mit über 40.000 Zeichen und der kyrillischen Schrift ganz zu schweigen). Man beschränkte sich also auf die Zeichen, die im Englischen benötigt wurden.
Als die Europäer mit ihren landestypischen Zeichen ebenfalls in die ASCII-Tabelle aufgenommen werden wollten, war es schon zu spät. Wie Sie an der ASCII-Code-Tabelle sehen können, befinden sich unter den 128 Zeichen, die in 7 Bits Platz haben, keine Umlaute wie zum Beispiel »äöüßÄÖÜß« oder landestypische Zeichen anderer europäischer Länder wie etwa französische.
Jetzt war die ISO (International Organisation for Standards) gefragt. Der ASCII-Zeichensatz wurde auf 8 Bits erweitert und unter der Bezeichnung »ISO-8859-1«, »ISO-8859-2« usw. etabliert. Der westeuropäische Standard ist in der »ISO-8859-1« erfasst. Damit lassen sich folgende Zeichen darstellen:
/* iso_ascii.c */
#include <stdio.h>
int main(void) {
int i;
for(i=0; i < 254; i++) {
if(i==27) // ESC-Zeichen ignorieren
continue;
printf(" |%d : %c| ",i,i);
}
return 0;
}
Die deutschen Sonderzeichen in oktaler Form können auch folgendermaßen ausgegeben werden:
/* umlaute.c */
#include <stdio.h>
int main(void) {
int i;
printf("R\204tsel, \231l, \232berfall\n");
printf("Umlaute oktal : \204\216\224\231\201\232\341\n");
return 0;
}
Das Problem mit den deutschen Sonderzeichen unter der Windows-Konsole ist, dass diese nicht den gewöhnlichen Windows-Zeichensatz verwendet, sondern einen OEM-Zeichensatz. Deshalb muss in diesem Fall ein Umweg gegangen werden. Mit Linux haben Sie dieses Problem nicht.
Mit char können Sie somit Zeichensätze mit einem Speicherbedarf von 8 Bits darstellen. Für Unicode-Zeichensätze sollte der Datentyp wchar_t eingesetzt werden. Er hat einen Speicherbedarf von 16 Bits.
|