Suche Linux Kommandozeilenprogramm um Encoding von Textdateien zu ermitteln



  • Gibt es so etwas wie das Programm file, mit dem man das Encoding einer Textdatei ausgeben kann?

    file -i *
    

    Zeigt leider nur an, dass das Encoding der Dateien US-ASCII ist, nicht aber, dass es sich hierbei um UTF-8 kodierte Dateien handelt.

    Ich suche etwas, dass auch zwischen UTF-8 und ISO 8859-15 oder Windows-1252 unterscheiden kann.

    Zwar könnte ich natürlich auch hergehen und jede Datei einzlen mit einem guten Texteditor öffnen, dass ist bei vielen Dateien aber recht umständlich und rekursiv ein Verzeichnis nach entsprechenden Dateien zu durchsuchen wäre noch aufwendiger.

    Ich hätte das ganze daher automatisiert.

    Kennt ihr da etwas, was das kann?



  • Habe noch enca gefunden, aber das kann leider mit "LANG = de_DE.UTF-8"
    nicht umgehen.

    "enca: Language de' is unknown or not supported. Runenca --list languages' to get list of supported languages.
    Run `enca -L none' to test only language independent, multibyte encodings.
    "

    Und file liefert wie schon gesagt, leider auch nur unzuverlässigen Mist.



  • Also mein file kann das:

    $ echo abcäöü | file -
    /dev/stdin: UTF-8 Unicode text
    

    Du weisst, dass jede ASCII-Datei auch automatisch UTF-8 ist, aber nicht umgekehrt? Vielleicht sind Deine Dateien also wirklich ASCII?



  • SG1 schrieb:

    Also mein file kann das:

    Jo, es kann sogar iso-8859 erkennen:

    $ echo abcäöü | iconv -f utf8 -t latin1 | file -
    /dev/stdin: ISO-8859 text
    


  • SG1 schrieb:

    Du weisst, dass jede ASCII-Datei auch automatisch UTF-8 ist, aber nicht umgekehrt? Vielleicht sind Deine Dateien also wirklich ASCII?

    Hast Recht, ich habe tatsächlich keine Umlaute und andere non ASCII spezifischen Zeichen mehr in meinem Text.

    Allerdings wurde ein ü bereits irgendwann zuvor in \uFFFD umgewandelt und das ist weder richtiges UTF-8, weil es eben nicht binär als UTF-8 "ü" in die Datei kodiert wurde noch konnte file das detektieren.

    Damit ist die Datei zwar ASCII, aber eben leider auch nicht echtes UTF-8, weil dieses ü nicht entsprechend drinsteht.
    Beim Lesen ist das schon störend, denn dann plötzlich \uFFFD anstatt ü im Text drinsteht.

    😞

    Kennt ihr ein Programm, das also auch solche Umschreibungen detektieren kann?



  • UTF-8 checken schrieb:

    Kennt ihr ein Programm, das also auch solche Umschreibungen detektieren kann?

    Schieb.


  • Administrator

    Verstehe ich dich richtig, dass du ein Programm suchst, welches eine UTF-8 Datei erkennen soll, welche aber gar keine UTF-8 Datei ist, da es von dir spezifische Fehler drin hat? Ich habe so meine Zweifel, dass du da was finden wirst.

    Wieso hat die Datei Fehler drin? Korrigiere doch zuvor dies und danach kannst du z.B. das Programm file verwenden.

    Grüssli



  • Dravere schrieb:

    Verstehe ich dich richtig, dass du ein Programm suchst, welches eine UTF-8 Datei erkennen soll, welche aber gar keine UTF-8 Datei ist, da es von dir spezifische Fehler drin hat? Ich habe so meine Zweifel, dass du da was finden wirst.

    Wieso hat die Datei Fehler drin?

    Keine Ahngun warum, hat sich im Laufe der Zeit halt eingeschlichen.
    Gut möglich, dass es am Anfang keine UTF-8 Datei war und diese dann umkodiert wurde.

    Korrigiere doch zuvor dies und danach kannst du z.B. das Programm file verwenden.

    Grüssli

    Das Problem hierbei ist allerdings, dass es ja noch mehrere solcher Dateien geben könnte, und da der Fehler gültiger ASCII Code ist, wird das schwierig zu erkennen.
    Gut, mit grep und passenden Suchbegriffen könnte ich schon was machen, aber so ganz effizient ist dann doch nicht.



  • Naja, technisch gesehen ist es eine ASCII-Datei. Wenn dort Unicode-Zeichen einkodiert sind, ändert das daran ja erstmal nichts, da diese Codierung nicht in der Datei, sondern in einem Anwendungsprogramm durchgeführt wird.

    Irgendwo werden die Dateien ja herkommen. Da solltest du ansetzen dass dieser Fehler nicht vorkommt


Anmelden zum Antworten