Veröffentlicht 13. Oktober 200915 j 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.
13. Oktober 200915 j \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.
13. Oktober 200915 j 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
14. Oktober 200915 j Autor 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:
14. Oktober 200915 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.