Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

problem mit escapesequenz \x

Empfohlene Antworten

Veröffentlicht

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.

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

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

  • 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:

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.