User since
2006-04-26
23
Artikel
BenutzerIn
Hallo zusammen,
ich stehe vor einem Problem das Konfigfiles auf verschiedenen Servern in dem gleichen Format sein sollten, aber eine händische Stichprobe ergeben hat diese haben unterschiedliche Formate.
Einfaches überschreiben oder erneutes rauskopieren der Konfigdatei geht nicht da die files alle verschieden Inhalt haben.
Also muss ich mit Perl die Files abklappert und irgendwie rausfinden, ist es ein BIN File, in Unicode oder in UTF-8 geschrieben. Könnte auch sein das es noch mehr Formate gibt die auf den Servern rumliegen.
Wie kann ich das Fileformat rausbekommen, sind übrigens alles nur ein paar KB Files (Textfiles).
User since
2005-01-17
14787
Artikel
Admin1
Die ersten Bytes einer Datei sollten doch Auskuft über den Typ geben.
Stichwort MagicBytes.
User since
2003-11-28
3645
Artikel
ModeratorIn
Unicode kann man nicht erkennen, da man Dateien nicht als "Unicode" speichern kann. Was geht, ist ein Encoding wie utf-8, utf-16, ucs-4 oder iso-8859-1. Wahrscheinlich verwechselst du utf-16 und Unicode.
Du kannst z.B. Encode::Guess verwenden, um z.B. zwischen utf-8 und iso-8859-1/ascii zu unterscheiden. Oder selbst Heuristiken schreiben, z.B. versuchen, eine Datei in einem Encoding einzulesen und statistische Untersuchungen machen.
Manchmal gibt es auch BOMs, dann ist das Encoding recht eindeutig.
Als binär könnte man eine Datei bezeichnen, die auf kein anderes Encoding passt und Bytes im Bereich unterhalb 32 (außer Newline und so) und zwischen 128 und 159 hat.
User since
2005-01-17
14787
Artikel
Admin1
Für Konfigurationsdateien ist es beispielsweise sinnvoll, in der ersten "Zeile" sowas wie
# -*- type: xml; coding: utf-8 -*-
Dann wird das leben später einfacher.
Ansonsten gibt es immer noch file unter Un*x. Aber das verwendet auch nur die Muster /etc/magic.