127.0.0.1 Geschrieben 13. Oktober 2009 Geschrieben 13. Oktober 2009 moin leute, ich hab in meinem quelltext folgendes stehen: cout<<"folgende zahl wurde gew\xFCrfelt"; \xFC anstelle ü. nach dem compilen zeigt er mir folgendes an: ...gew³rfelt ... woran kann das denn liegen? muss ich den für die escapesequenzen noch ne spezielle bib einbinden? ich hab im netz nichts gefunden.
Klotzkopp Geschrieben 13. Oktober 2009 Geschrieben 13. Oktober 2009 \xFC ist nicht generell die Escapesequenz für ü. Dein Problem hat mit Escapesequenzen eigentlich auch gar nichts nichts zu tun. Deine Konsole benutzt offenbar eine andere Zeichencodierung als du erwartest, das ist alles. Dass du im Code Escapesequenzen für Sonderzeichen benutzen musst, liegt auch nur daran, dass dein Editor eine andere Codierung als deine Konsole benutzt. 0xFC ist der Code für ü in ISO 8859-1. Dein Editor verwendet wahrscheinlich genau diese Codierung, also ist es völlig egal, ob du im Code \xFC oder gleich ü schreibst. Entscheidend ist die Codierung deiner Konsole, und die ist vermutlich Codepage 850. Da siehst du die hochgestellte 3 bei FC. Der richtige Code fürs ü wäre in diesem Fall also \x81.
unbenannt Geschrieben 13. Oktober 2009 Geschrieben 13. Oktober 2009 Gleich vorweg: ich habe diesbezüglich eigentlich keine Ahnung, aber da ich dies auch schon einmal beobachtet habe und auch sonst mit Zeichenkodierungen gerne auf Kriegsfuß stehe, habe ich einfach mal gesucht. Du lässt in der DOS-Konsole ausgeben, richtig? Das Problem liegt darin, dass DOS die erweiterten Codepages von IBM nutzt, Du allerdings gemäß ANSI-Standard arbeitest. Der hexadezimale Wert "FC" entspricht dezimal 252, was im ANSI-Standard dem ü entsprechen würde. In der IBM-Definition entspricht der Code 252 allerdings ³. Das "ü" wäre bei IBM dezimal 129 bzw. hexadezimal "x81". siehe auch: ASCII-Tabelle nach ANSI-Standard ASCII/IBM Zeichentabelle
127.0.0.1 Geschrieben 14. Oktober 2009 Autor Geschrieben 14. Oktober 2009 wie kann ich denn herausfinden, welche codepages meine ide (codeblocks) und die doskonsole benutzen? besser gefragt: wie kann ich denn quelltext schreiben, der auf jeder maschine eine über eine escapesequenz das gewünschte zeichen ausgibt? danke schon mal.:confused:
Klotzkopp Geschrieben 14. Oktober 2009 Geschrieben 14. Oktober 2009 wie kann ich denn herausfinden, welche codepages meine ide (codeblocks) und die doskonsole benutzen? Für deine IDE solltest du in der Dokumentation nachsehen. In der Konsole kannst du das mit dem Kommando chcp herausfinden. besser gefragt: wie kann ich denn quelltext schreiben, der auf jeder maschine eine über eine escapesequenz das gewünschte zeichen ausgibt?Indem du entweder die Codierung der Konsole ermittelst (GetConsoleOutputCP) und entsprechend andere Strings ausgibst, oder indem du der Konsole ein bestimmte Codierung aufzwingst (SetConsoleOutputCP). Letzteres funktioniert aber nur, wenn die Konsole keine Rasterschriftart benutzt. Das ist natürlich Windows-spezifisch, eine portable Lösung gibt's nicht. Under Linux hast du dieses Problem in aller Regel nicht, weil da praktisch überall UTF-8 benutzt wird. Das hat allerdings wiederum andere Nachteile, wie z.B. dass die Länge eines Strings in Bytes von der Anzahl der Zeichen abweichen kann.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden