
Ich habe etwa 700 Dateien, die das Ergebnis eines Untertitelungsprozesses sind. Ich kann die Dateien auf meinem PC oder Mac in einer GUI öffnen, aber wenn ich sie auf dem Server mit nano öffne, erhalte ich Folgendes:
��0^@0^@;^@0^@0^@;^@0^@0^@;^@0^@0^@ ^@0^@0^@;^@0^@0^@;^@0^@6^@;^@0^@0^@
^@
^@N^@o^@t^@ ^@A^@v^@a^@i^@l^@a^@b^@l^@e^@
Hier sind die Ergebnisse einiger Befehlszeilenprogramme, die ich ausprobiert habe:
#file infile.txt
infile.txt: data
# file -bi --mime-encoding infile.txt
application/octet-stream; charset=binary
recode ../CR-LF infile.txt
#file -bi --mime-encoding infile.txt
#iconv -f binary -t uff-8 infile.txt > out.txt
iconv: conversions from `binary' and to `uff-8' are not supported
#recode ../CR-LF infile.txt
#recode UTF8..ISO-8859-15 infile.txt
# file -bi --mime-encoding infile.txt
text/plain; charset=utf-16le
#xxd infile.txt | head -5
0000000: fffe 3000 3000 3b00 3000 3000 3b00 3000 ..0.0.;.0.0.;.0.
0000010: 3000 3b00 3000 3000 2000 3000 3000 3b00 0.;.0.0. .0.0.;.
0000020: 3000 3000 3b00 3000 3600 3b00 3000 3000 0.0.;.0.6.;.0.0.
0000030: 0d00 0d0a 004e 006f 0074 0020 0041 0076 .....N.o.t. .A.v
0000040: 0061 0069 006c 0061 0062 006c 0065 00 .a.i.l.a.b.l.e.
Die eigentliche Datei sieht folgendermaßen aus (es stellte sich heraus, dass dies nicht die beste Wahl war, da ich versehentlich eine Datei gewählt hatte, die nicht viel Inhalt hatte):
00;00;00;00 00;00;06;00 Not Available
Wenn ich die Datei dann nanoe, erscheint unten ein Text, der besagt, dass sie aus dem DOS- und Mac-Format konvertiert wurde, aber es ist immer noch alles Müll. Ich muss in der Lage sein, die Dateien zu durchlaufen und die Daten in eine Datenbank zu importieren, aber das geht natürlich nicht, wenn der Server das Format nicht lesen kann.
Ich würde gerne eine langfristige Lösung finden, da ich in Zukunft viele davon generieren werde und lieber nicht die Windows Powershell oder ein gleichwertiges Programm verwenden, sondern die Konvertierung in meinen Prozess integrieren möchte.
Antwort1
Die Lösung für mich bestand also letztendlich darin, recode zu verwenden. Es gibt nicht viel gute Dokumentation, aber der Trick bestand darin, die Option -f zu verwenden, um eine Änderung zu erzwingen.
recode -f UTF-7 *.txt