Zum Inhalt springen

problem mit escapesequenz \x


127.0.0.1

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

\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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...