Codepage im Quelltext herausfinden

#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!
#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.
#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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren