UTF-8 oder ANSII von 1000 Textdateien rauskriegen

ollle

Cadet 2nd Year
Registriert
Juli 2013
Beiträge
29
Ich habe folgendes Problem: ich habe ca. 1000 Textdateien (mit der Dateiendung *.str) in diversen Unterverzeichnissen. Ich muss jetzt rauskriegen, welche der Dateien UTF-8 und welche ANSII kodiert sind.
Kennt jemand vielleicht eine Software, mit der ich das rauskriegen kann?
 
Hmmm, wenn das nicht so kompliziert wäre, vielleicht schon. Aber "Normalsterbliche" sollten das auch können. Wenn jemand vielleicht eine Software kennt, dann kann ich die Lösung auch nem Kollegen weitergeben.
Trotzdem danke!
 
Will mich jetzt nicht zu weit aus dem Fenster lehnen, aber wenn bei den UTF8-basierten Dateien das Byte Order Mark fehlen sollte, dann dürfte diese Entscheidung je nach Inhalt der Datei gar nicht immer möglich sein. Wenn das BOM fehlt, dann ist beispielsweise "hello world" sowohl gültiges 7bit ASCII als auch gültiges UTF8. Du bräuchtest hier für eine einwandfreie Unterscheidung also die Garantie, dass wirklich jedes UTF8-kodierte File auch mindestens einen Character enthält, der nicht in ASCII enthalten ist, und dann bräuchtest du ein Tool, was in jeder Datei nach genau solchen Zeichen sucht.

Wenn das BOM aber vorhanden ist, dann ist der von Madman beschriebene weg eigentlich schon ziemlich einfach, viel leichter wird es nicht werden.
 
Zuletzt bearbeitet:
ollle schrieb:
Ich habe folgendes Problem: ich habe ca. 1000 Textdateien (mit der Dateiendung *.str) in diversen Unterverzeichnissen. Ich muss jetzt rauskriegen, welche der Dateien UTF-8 und welche ANSII kodiert sind.
... um dann was damit zu machen? Oder soll die Software einfach nur ne Liste ausspucken?
Ergänzung ()

crvn075 schrieb:
Will mich jetzt nicht zu weit aus dem Fenster lehnen, aber wenn bei den UTF8-basierten Dateien das Byte Order Mark fehlen sollte, dann dürfte diese Entscheidung je nach Inhalt der Datei gar nicht immer möglich sein.
Naja. 7-Bit ASCII und UTF-8 sind identisch. Von daher kann man sie exakt gleich behandeln. Insofern ist die Frage auch nicht ganz exakt.
Ich befürchte ja, dass nicht ASCII gemeint ist, sondern irgendein Windows-Zeichensatz vs. UTF-8.
 
Zuletzt bearbeitet:
andy_m4 schrieb:
Naja. 7-Bit ASCII und UTF-8 sind identisch. Von daher kann man sie exakt gleich behandeln. Insofern ist die Frage auch nicht ganz exakt.

Jup, wollte nur darauf hinaus, dass die Unterscheidung kein "XOR-Problem" ist, wie der TS das momentan wohl vermutet (edit: vorausgesetzt eben, dass es sich um 7bit ASCII handelt).
 
Zuletzt bearbeitet:
andy_m4 schrieb:
... um dann was damit zu machen? Oder soll die Software einfach nur ne Liste ausspucken?

Die 1000 Dateien dürfen nicht in UTF-8 kodiert sein, sonst gibts Probleme mit der Software, die die Dateien liest. Es dürften nur einige wenige in UTF-8 sein. Genau genommen war es eine einzige, die ich gefunden habe....

Nixdorf schrieb:

Danke, das hat mir geholfen. Bei den meisten Dateien steht zwar ASCII (nee, ich kenne den Unterschied zwischen ANSII und ASCII nicht), bei vielen auch „Unknown“ und bei genau einer UTF-8.
Ich geh jetzt naiverweise davon aus, dass UTF-8 eliminiert ist.
 
ollle schrieb:
ich kenne den Unterschied zwischen ANSII und ASCII nicht

  • ASCII ist in der Grundform nur eine 7-bit Zeichentabelle mit 128 Zeichen. Da fehlen dann zum Beispiel jegliche Umlaute. Mit diese Tabelle fangen viele andere Kodierungen an, sie sind also alle bei Texten mit ASCII kompatibel, solange diese nur diese ersten 128 Zeichen benutzen. Das macht es auch schwer, eine Datei als etwas anderes als SCII zu erkennen, wenn eben keine speziellen Zeichen drin stehen.
  • ISO-8859-1 ist eine von mehrern 8-bit-Tabellen, die jeweils weitere 128 Zeichen beinhalten. Die "-1" Version ist die in Deutschland gebräuchliche mit deutschen Umlauten. Wird auf allem außer Windows benutzt, wenn man keine UTF-Kodierung nimmt. ISO-8859-15 ist ISO-8859-1 mit Eurosymbol.
  • ANSI heißt eigentlich Windows-1252 und ist ähnlich zu ISO-8859-1, nur anders. Hat z.B. auch das Eurozeichen, aber an anderer Stelle. Wird auf Windows genutzt. Der Ärger mit ISO-8859-1/ISO-8859-15/Windows-1252 hat dazu geführt, dass man inzwischen am besten UTF-8 für alles nimmt.
  • UTF-8 ist die bei uns beliebteste Kodierung für Unicode. Hier gibt es keine feste Länge von z.B. einem Byte für ein Zeichen, da Unicode zigtausend Zeichen enthält. Daher haben seltene Zeichen eine länger Kodierung. Somit ist UTF-8 komplizierter als andere Formate. Auch hier gilt aber, dass es mit ASCII identisch ist, solange nur die ersten 128 Zeichen genutzt werden. Und es gibt noch den Sonderfall, dass man eine UTF-8-Datei explizit als solche markieren kann, wenn die richtigen drei (nicht angezeigten) Bytes am Anfang stehen (Byte Order Mark, BOM).

Ich hoffe, das hilft. Wie schon andere gesagt haben, kann man die Kodierung eben nicht immer am Inhalt erkennen. Daher steht da im Zweifelsfall halt oft "ASCII".
 
Super, danke für die Erklärung.
In besagten ANSI-Dateien sind hier die Umlaute auch noch als Unicode geschrieben, für "ä" steht dann da z.B. "\u00e4".
Kompliziert, wenn Jahrzehnte alte Standarts mit neueren zusammen treffen :-)
 
ollle schrieb:
sind hier die Umlaute auch noch als Unicode geschrieben, für "ä" steht dann da z.B. "\u00e4".

Das ist dann allerdings nicht wirklich in Unicode kodiert, sondern da steht halt eine Escape-Sequenz mit den Unicode-Zeichen als UTF-16, wie es beispielsweise auch bei JSON als Datenformat gemacht wird.
 
Zurück
Oben