Encoding/Unicode der Quelldatei auslesen



  • Hallo zusammen.

    Kann ich herausfinden, in welchem Encoding (z.B. ISO-8859-1) die Sourcedatei vorliegt? Oder ob es sich um Unicode handelt?

    Angenommen eine Datei wurde in ISO-8859-1 geschrieben, dann wäre \xFC in einem String ein 'ü'. Ist die Datei dagegen ISO-8859-7 wäre \xFC ein griechischer Buchstabe. Damit ich diese Strings korrekt in Unicode umwandeln kann, muss ich wissen, in welchem Format die Quelldatei geschrieben wurde.

    Grüße,
    Neku



  • Du kannst mit Glück herausfinden, ob eine Datei Unicode ist oder nicht, aber zwischen den unterschiedlichen Encodierungen zu unterscheiden ist nicht möglich, da die Datei keine Informationen darüber in sich trägt.

    Ein Ansatz wäre zum Beispiel, diverse Codierungen zu testen und dann mit einem Wörterbuch abzugleichen, dann kannst Du das feststellen.

    Aus diesem Grund tragen die (meisten) XML-Dateien ja die Codierung im Header.



  • Danke.
    Dann wäre die einzig sinnvolle Lösung, nur ASCII zu erlauben und Sonderzeichen somit auszuschließen.



  • Bei Unicode sind die ersten zwei Byte ein Header, wenn das erste Byte 0xFF ist und das zweite 0xFE ist die Datei ne Unicode-Datei im little-endian-format



  • Und wenn's mit FE FF losgeht ist es big endian...

    (Ich wieß aber nicht ob das "Standard" ist oder nur eine Windows-Konvention)



  • Unicode schrieb:

    Bei Unicode sind die ersten zwei Byte ein Header, wenn das erste Byte 0xFF ist und das zweite 0xFE ist die Datei ne Unicode-Datei im little-endian-format

    Unicode != UTF-16



  • Fand ich einen guten Einstieg: http://www.codeproject.com/file/textfiledocument.asp

    @finix: ..was für ein wertvoller Beitrag



  • peterchen schrieb:

    @finix: ..was für ein wertvoller Beitrag

    Heh. Du bist putzig.

    1. ist Unicode ein Standard, auch wenn du diese Bezeichnung in Anführungszeichen setzt
    2. ist deine Anmerkung bezüglich "Windows-Konvention?" relativ hohl
    3. steht es im "Standard"

    Wahrscheinlich hast du meinen Beitrag nicht einmal verstanden... 🙄



  • Dein Beitrag hilft weder jemandem, der den Unterschied kennt, noch jemandem, der ihn nicht kennt. Und für die vorliegende Frage ist der Unterschied zwischen Standard und Kodierung fast schon akademisch (denk' ich zumindest, aber vielleicht irre ich mich da)



  • peterchen schrieb:

    Dein Beitrag hilft weder jemandem, der den Unterschied kennt, noch jemandem, der ihn nicht kennt. Und für die vorliegende Frage ist der Unterschied zwischen Standard und Kodierung fast schon akademisch (denk' ich zumindest, aber vielleicht irre ich mich da)

    Ich war ein wenig in Eile - ansonsten hätte ich vielleicht noch erläutert was ich meinte.
    Dass z.B. eine UTF-8 kodierte Datei nicht zwangsläufig ein BOM hat, es wenn vorhanden anders aussieht und euer Tipp (bzw die Basis der Lösung "Unicode == 2-Byte-Zeichen") bei UTF-32LE eher in die Irre führt.
    Und genau dadurch ist mein Einwurf eben nicht rein 'akademisch'...



  • schon ok 🙂


Anmelden zum Antworten