Deutsche Umlaute werden in der Win32-Konsole falsch angezeigt. Der Grund dafür sind Zeichensatz-Inkompatibilitäten. Während man während der Programmierung zumeist den ASCII-Zeichensatz verwendet, wird in der Konsole mit einem ANSI-Zeichensatz gearbeitet.
Die Lösung: Anstatt des Zeichens fügt man während der Programmierung den ANSI-Code des Umlauts ein.
1. Variante: Die ANSI-Codes werden als 'unsigned char' in Konstanten gespeichert. Während der Programmierung benötigt man dann kein weiteres Wissen über die einzelnen ANSI-Codes der Umalute, dafür hat man auch einen erhöhten Programmieraufwand:
// Verwendungsbeispiel
printf("Heute ist ein sch\x94ner Tag!\n"); // \x leitet eine Hexadezimal-Escapesequenz ein
cout << "Heute ist ein sch\x94ner Tag!" << endl;
C/C++ Code:
// Verwendungsbeispiel
printf("Heute ist ein sch\x94ner Tag!\n"); // \x leitet eine Hexadezimal-Escapesequenz ein
cout << "Heute ist ein sch\x94ner Tag!" << endl;
C/C++ Code:
// Verwendungsbeispiel
printf("Heute ist ein sch\x94ner Tag!\n"); // \x leitet eine Hexadezimal-Escapesequenz ein
cout << "Heute ist ein sch\x94ner Tag!" << endl;
Diese Version hat allerdings einen Haken: Ist das nächste Zeichen ebenfalls hexadezimal bzw. oktal darstellbar, wird dieses Zeichen mitinterpretiert. Zum Beispiel würde im Wort "Oberfl\x84che" nicht '\x84' mit 'ä' ersetzt werden sondern 'x84c' mit der Zahl '2124'. Für dieses Problem gibt es allerdings einen kleinen Trick:
C/C++ Code:
cout << "Oberfl\x84 \bche" << endl;
C/C++ Code:
cout << "Oberfl\x84 \bche" << endl;
C/C++ Code:
cout << "Oberfl\x84 \bche" << endl;
Nach dem Hex-Code fügt man ein Leerzeichen hinzu, dass sofort danach wieder mit der Escapesequenz '\b' für die Rücktaste wieder gelöscht wird (Dankeschön an einen unbekannten Zusender).
MfG SideWinder
PS: Wenn ihr Fehler findet, meldet euch bitte umgehend.
Zuletzt bearbeitet von SideWinder am 14:12:11 24.01.2006, insgesamt 18-mal bearbeitet
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum nicht antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.