Seite 1 von 1

[GNU] Encoding von Dateien ermitteln

Verfasst: Dienstag 21. Oktober 2008, 11:30
von str1442
Hallö,

"file" oder "file -i" funktioniert nicht, bzw beim ersten bekomme ich sowieso keine genauen Informationen und beim zweiten erzählt er mir immer, das sei doch ascii, auch bei Systemdateien (Systemencoding (Ausgabe von "locale"): Komplett de_DE.UTF-8 ). Sollte doch nicht so das Problem sein, da sich die Encodings auf Byte-Ebene sowieso unterscheiden?

Ideen? Danke fürs Lesen :D

EDIT: -.-* Hab grade mal ein Sonderzeichen eingefügt, dann wirds erkannt. Bei nicht-utf-8 kodierten Dateien dürfte das ja dann nicht funktionieren. Teste ich mal. Wenn ansonsten die Zeichen von utf-8 bis 128 komplett gleich mit iso-8859-xx / ascii sind, ist das wohl der einzige Weg.

Verfasst: Dienstag 21. Oktober 2008, 11:40
von Leonidas
Wenn du in UTF-8 keine Zeichen außerhalb der ersten 128 Bytes hast, dann sind die so enkodierten Dateien identisch mit ASCII. Manchmal wird ein UTF-8 BOM gesetzt, aber das heißt erstens nicht zwingend dass es UTF-8 ist und zweitens ist der UTF-8 BOM unter Unix eher selten.

Übrigens: Encodings kann man nicht ermitteln. Man kann nur raten oder nachfragen.

Verfasst: Dienstag 21. Oktober 2008, 11:56
von lunar
Wobei "file" in den meisten Fällen recht treffend rät ... imho zuverlässiger als "chardet".

Verfasst: Dienstag 21. Oktober 2008, 14:07
von str1442
Hm, ok Danke!

Durch die Einstellungen in den "locales" kann ich aber ziemlich sicher sein, das man Dateien wenn nötig automatisch neu kodiert...? Also bei Tools / Programmen, wo das auch Sinn macht, zb vim und sed?

Verfasst: Dienstag 21. Oktober 2008, 14:42
von Leonidas
Bei Vim stellt man das Encoding mit ``:set enc=utf8``, vim rekodiert nicht automatisch.

Verfasst: Dienstag 21. Oktober 2008, 15:10
von BlackJack
@str1442: Nein, Editoren kodieren nichts ungefragt um. Können sie mit der Information ja auch gar nicht weil die Quellkodierung nicht bekannt ist, sondern geraten werden müsste.

Die "locales"-Einstellungen benutzen Programme um Ausgaben in Dialogen und auf der Konsole entsprechend angepasst zu tätigen, sofern sie sich um die "locales"-Einstellungen kümmern. Bei Editoren vielleicht noch als Voreinstellung für das speichern *neuer* Texte und das dekodieren vorhandener, wobei das natürlich Müll ergibt, wenn die Kodierung in der Datei nicht mit der "locale"-Kodierung überein stimmt.