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. Zitieren
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. Zitieren
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 Zitieren
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: Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.