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.
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!
MaWin schrieb: > Ja, wir machen das über die Taste F12. Ist direkt inkludiert! Rätselhaft der Sinn Deiner Worte ist. Bei meinem Editor werden mit F12 Quelltext-Teile verborgen. Ich suche die Zeichensatztabelle, also das X bei ISO-8859-X.
:
Bearbeitet durch User
Die Codepage von was abfragen?! Die Original-Kodierung vom Quelltext (fast immer UTF-8)? Die vom Dateisystem? Die von MS Excel? Die von der mikrocontroller.net-Seite?
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.
:
Bearbeitet durch User
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.
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.
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.