C++ - Zeichencodes für Sonderzeichen

G.Eichelsdörfer - Staatliche Technikerschule Weilburg

Ausgabe von Sonderzeichen in Konsoleumgebungen

Sie erstellen in einer GUI-Anwendung Programme, die Ausgaben in einer Konsoleumgebung ausführen. Bei der Ausführung der Programme erleben Sie, dass Sonderzeichen wie Umlaute und ß nicht so ausgegeben werden, wie Sie diese in Stringkonstanten eingegeben haben.
(GUI = graphical user interface)
Die GUI-Oberfläche verwendet eine andere Zeichencodetabelle als die Konsole. Beide Tabellen unterscheiden sich teilweise.

Nun möchten Sie aber solche Sonderzeichen korrekt ausgeben lassen. Zu diesem Zweck benötigen Sie die Codes dieser Zeichen. Diese können Sie auch in der Fachliteratur zumeist in Anhängen finden. Dazu müssen Sie aber die im Betriebssystem eingestellte Codeseite kennen. Sie können zu diesem Zweck auch mein kleines Konsolenprogramm "charcodes" verwenden. Dieses zeigt Ihnen zu einem eingegebenen Zeichen den Code in dezimaler, hexadezimaler und oktaler Darstellung.

Beispiel:
   Zeichen   |    dezimal   |  hexadezimal |     oktal    
      ö      |      148     |      94      |      224

Um beispielweise das Wort "größer" ausgeben zu lassen, notieren Sie
cout << "gr\224\???er;
Mit der Folge \ooo wird ein Zeichen in seinem dreistelligen Codewert im String eingebaut. Die drei Fragezeichen im Ausgabebeispiel sollen zeigen, dass der Code für das 'ß' noch unbekannt ist. Dieses können Sie jedoch mit "charcodes" leicht herausfinden und einsetzen. Man kann auch den hexadezimalen Code per \x?? einsetzen. Dies kann jedoch zumindest bei VC++ zu Problemen bei der Übersetzung führen, wenn unmittelbar nach dem Hexcode ein Zeichen folgt, welches auch als Hexziffer verwendet wird - beispielsweise im Wort "öfter".
cout << "\x94fter";
Hier interpretiert der Compiler den Hexcode als 94f und meldet, dass dieser Wert zu groß sei.

Das Windows-Konsolenprogramm charcodes.exe können Sie hier unmittelbar starten oder herunterladen (60 KByte).