In welcher Zeichenkodierung speichert ihr eure Quellcodedateien ab?


  • Mod

    SideWinder schrieb:

    Der Parser bekommt doch schon fertige Tokens vom Lexer, inwiefern muss der die Länge des Bezeichners feststellen?

    Aber Lexer und Präprozessor sind langsamer, wenn der Quellcode länger ist. Für jemanden, der bei UTF-8 vs. ASCII relevante Geschwindigkeitsunterschiede heraufbeschwört, ist dieser Unterschied wichtig.

    tntnet schrieb:

    Quellcode ist immer reines ASCII. In meinem Quellcode kommen keine Umlaute vor. Kommentare schreibe ich in Englisch. Da kommen keine nicht-ASCII-Zeichen vor. Die einzige Stelle, wo ein Umlaut eigentlich hingehört ist in meinem Namen. Und da verwende ich ae.

    ASCII ist gültiges UTF-8.

    Ich sollte wohl noch erwähnen, dass ich das selbstverständlich auch so halte, nicht das ein falscher Eindruck entsteht. Aber der Editor ist darauf eingestellt UTF-8 zu benutzen (auch wenn ich nur die ASCII-Untermenge nutze) und ich hätte auch kein Problem mit einem 'ä' im Quelltext, wenn ich es bräuchte.



  • Interessant wird das eh erst, wenn der Compiler auch die C++11 UTF-Literale unterstützt. 🙂



  • SeppJ schrieb:

    tntnet schrieb:

    Quellcode ist immer reines ASCII. In meinem Quellcode kommen keine Umlaute vor. Kommentare schreibe ich in Englisch. Da kommen keine nicht-ASCII-Zeichen vor. Die einzige Stelle, wo ein Umlaut eigentlich hingehört ist in meinem Namen. Und da verwende ich ae.

    ASCII ist gültiges UTF-8.

    Ich sollte wohl noch erwähnen, dass ich das selbstverständlich auch so halte, nicht das ein falscher Eindruck entsteht. Aber der Editor ist darauf eingestellt UTF-8 zu benutzen (auch wenn ich nur die ASCII-Untermenge nutze) und ich hätte auch kein Problem mit einem 'ä' im Quelltext, wenn ich es bräuchte.

    Wie Du Deinen Editor einstellst ist herzlich egal. Wenn nur ASCII verwendet wird, kommt eh das gleiche raus. Na ja - EBCDIC darf man nicht verwenden. Wenn im Kommentar ein ä mit ISO-8859-1-Kodierung oder UTF-8-Kodierung vorkommt, wird der Compiler beides sicher ignorieren. Also auch dann wäre es egal.



  • Ich verwende Codepage 1252 (Fast ISO 8859-1). Das scheint der Default zu sein, habe ich nie was dran geändert und sehe auch keinen Grund dies zu tun.

    Ich verwende Umlaute in Literalen, finde es Userfeindlich Ihm verstümmelte Umlaute vorzusetzen.



  • BadWolf schrieb:

    Ich verwende Codepage 1252 (Fast ISO 8859-1). Das scheint der Default zu sein, habe ich nie was dran geändert und sehe auch keinen Grund dies zu tun.

    wenn du Sonderzeichen verwendest (fängt mit dem €-Zeichen schon an), hast du einen Grund

    CP1252 ist eine Mischung aus ISO-8859-1 und ISO-8859-15. Der für deutsche relevante Unterschied ist beim €-Zeichen, das in keiner dieser Codierungen an der richtigen Stelle sitzt (richtig aus Sicht von Unicode).

    Irgendwann brauchst du dann doch mehr als CP1252 und dann wirds lustig



  • UTF-8 schrieb:

    Das hat mit dem einen nichts zu tun.
    Bei UTF-8 kann ein Zeichen 1 bis 4 Byte sein, dass muss also der Parser berücksichtigen und das bremst ihn ganz sicher mehr aus, als eine Quellcodedatei bei der ein Zeichen nicht größer als 1 Byte ist.

    Netterweise hat UTF-8 aber die Eigenschaft dass man bei den meisten Dingen komplett ignorieren kann dass es ein Multi-Byte-Encoding ist. z.B. wenn du einen String in Tokens splitten willst, und die Split-Chars alle Codepoints <= 127 sind, dann kannst du das mit UTF-8 genau gleich machen wie man es auch mit Latin-1 oder einem anderen Single-Byte Encoding machen würde.

    Und wenn der Compiler Unicode-Literals unterstützen soll o.ä., dann braucht er sowieso irgend ein Unicode-Encoding. Kann er gleich UTF-8 nehmen, anstatt Platz für UTF-16 zu verschwenden (ohne besonderen Vorteil, weil UTF-16 genau so ein variable Length Encoding ist).
    Und UTF-32 wäre dann wohl doch etwas Overkill. Würde ziemlich sicher alles nur langsamer machen, wegen Platzverbrauch im Cache und so.



  • wenn du Sonderzeichen verwendest (fängt mit dem €-Zeichen schon an), hast du einen Grund

    CP1252 ist eine Mischung aus ISO-8859-1 und ISO-8859-15. Der für deutsche relevante Unterschied ist beim €-Zeichen, das in keiner dieser Codierungen an der richtigen Stelle sitzt (richtig aus Sicht von Unicode).

    Irgendwann brauchst du dann doch mehr als CP1252 und dann wirds lustig

    Hmm, ich verwende das Euro-Zeichen laufend (Ich schreibe Finanzsoftware). Ich hatte damit noch nie Probleme. Und wenn ich Tatsächlich mal Unicode brauche (war bisher nur bei Benutzung eines API's vonnöten, das Strings in UTF-16 erwartet) hat auch MultiByteToWideChar() keine Probleme mit dem Euro-Zeichen.

    Von daher, wie gesagt, ich hatte bisher keinen Grund auf UTF8 zu gehen. Ich sollte dazu vielleicht noch sagen, dass mir Linux am Arsch vorbei geht, das könnte vielleicht ein Grund sein, warum mir das Euro-Zeichen keine Probleme bereitet...



  • die Antwort hängt ja von der Programmiersprache ab - in C/C++ (da brauche ich nie mehr als 7 bit) kann die Antwort ganz anders aussehen als etwa in APL



  • BadWolf schrieb:

    Von daher, wie gesagt, ich hatte bisher keinen Grund auf UTF8 zu gehen. Ich sollte dazu vielleicht noch sagen, dass mir Linux am Arsch vorbei geht, das könnte vielleicht ein Grund sein, warum mir das Euro-Zeichen keine Probleme bereitet...

    Du meinst nicht nur Linux, sondern praktisch jedes andere Betriebssystem außer Windows. Bei deiner Finanzsoftware kannst du die vielleicht ignorieren, andere können das nicht.

    UTF-8 ist in dieser Hinsicht einfach genial. Es ist simpel und dabei sehr gut durchdacht.



  • Rotk¤ppchen: Klasse Name 😃 👍



  • BadWolf schrieb:

    Von daher, wie gesagt, ich hatte bisher keinen Grund auf UTF8 zu gehen. Ich sollte dazu vielleicht noch sagen, dass mir Linux am Arsch vorbei geht, das könnte vielleicht ein Grund sein, warum mir das Euro-Zeichen keine Probleme bereitet...

    Ich finde es respektlos, wenn jemand solche Kraftausdrücke verwenden muss. Wirklich schade.

    Dennoch wollte ich hier mal anmerken, dass es unter Linux keine Probleme mit dem Euro-Zeichen gibt. Moderne Linuxe wie auch andere Betriebssysteme arbeiten mit UTF-8. Ich habe schon seit Jahren keine Probleme mehr mit Sonderzeichen gehabt. Und Windows verwende ich zu Hause wahrscheinlich genau soviel wie Du Linux.



  • SideWinder schrieb:

    in Zeiten von 2min Full-Compile-Time

    Was für Kindergartensoftware ist das?


Anmelden zum Antworten