[GNU] Encoding von Dateien ermitteln

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Dienstag 21. Oktober 2008, 11:30

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 21. Oktober 2008, 11:40

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Dienstag 21. Oktober 2008, 11:56

Wobei "file" in den meisten Fällen recht treffend rät ... imho zuverlässiger als "chardet".
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Dienstag 21. Oktober 2008, 14:07

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?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 21. Oktober 2008, 14:42

Bei Vim stellt man das Encoding mit ``:set enc=utf8``, vim rekodiert nicht automatisch.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Dienstag 21. Oktober 2008, 15:10

@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.
Antworten