Codepage im Quelltext herausfinden

OP #5343921
Lesenswert?
• ▲
▼
Hallo zusammen,

ich weiß, wie ich Quelltext-Codepage und Output-Codepage im Build-Prozeß 
einstelle.

Gibt es eine Möglichkeit, im Executable die Codepage abzufragen?
Klar - ich kann meine eigene Funktion schreiben (ein paar Sonderzeichen 
mit dem Zahlenwert vergleichen), aber das wäre die weniger schöne 
Lösung.

Viele Grüße
W.T.
Gast #5343928
Lesenswert?
• ▲
▼
Walter T. schrieb:
> Gibt es eine Möglichkeit, im Executable die Codepage abzufragen?
> Klar - ich kann meine eigene Funktion schreiben (ein paar Sonderzeichen
> mit dem Zahlenwert vergleichen), aber das wäre die weniger schöne
> Lösung.

Ja, wir machen das über die Taste F12. Ist direkt inkludiert!
OP #5343952
Lesenswert?
• ▲
▼
Rufus Τ. F. schrieb:
> Das ist nicht MaWin, sondern ein Spinner.

Danke für die Klarstellung. Die Antworten des echten MaWin sind zwar 
nicht immer hilfreich, aber meistens auch kein kompletter Blödsinn.


Aber ich will doch noch einmal meine Fragestellung präzisieren: Ich 
suche die Zeichensatztabelle im Kompilat. Also z.B. das X bei ISO-8859-X 
oder eine äquivalente Information. Der Teil, den -fexec-charset= im GCC 
festlegt.
Gast #5343956
Lesenswert?
• ▲
▼
Wenn's UTF-8 ist, dann ist das kein ISO-8859-irgendwas, also genau so 
ein X gibt es eher selten. Da zumindest beim GCC -fexec-charset per 
default UTF-8 ist, würde ich im makefile einfach per "-D" ein Makro 
übergeben was den Charset einstellt, ala:

CHARSET=ISO-8859-15
gcc "-DMYCHARSET=$(CHARSET)" "-fexec-charset=$(CHARSET)"

Wobei ich mich jetzt schon frage warum man das überhaupt ändern wollen 
würde? Das machts doch nur extra kompliziert.
OP #5343963
Lesenswert?
• ▲
▼
Dr. Sommer schrieb:
> Wenn's UTF-8 ist, dann ist das kein ISO-8859-irgendwas,

Deswegen ja auch "z.B.". Ich implementiere gerade eine 
Zeichensatztabelle, die auch Umlaute enthält. Damit das richtig 
funktioniert, muss ich natürlich sicherstellen, dass auch mit dem 
passenden Ziel-Zeichensatz kompiliert wird.

Im Optimalfall gibt es irgendeine Information, die ich im Präprozessor 
auswerten kann, um eine entsprechende Warnung auszugeben, sollte der 
Zeichensatz nicht passen.

Im zweitbesten Fall gibt es irgendeine Information, die ich zur Laufzeit 
auswerten kann.
Gast #5343968
Lesenswert?
• ▲
▼
Schreib einfach -fexec-charset nicht ins makefile und schreib in die 
Doku, dass man es nicht hinzufügen soll. Das sollte wohl reichen? Ich 
vermute mal 90% der Programme würden nicht mehr funktionieren wenn 
jemand böswillig den Zeichensatz ändert, und keiner prüft das im Code... 
Oder nutze C++-Literale mit Encoding-Angabe ala u"üäö" um UTF-8 zu 
erzwingen.
#5345445
Lesenswert?
• ▲
▼
Zumindest der i386-gcc kann die komplette Kommandozeile in die 
ausführbare ELF-Datei schreiben. Mit -g sollte es auf jeden Fall 
passieren, mit -frecord-gcc-switches eigentlich auch, aber evt. in einer 
anderen section.

https://stackoverflow.com/questions/12112338/get-the-compiler-options-from-a-compiled-executable
https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html
https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.