recode kleines Problem

31/08/2007 - 11:39 von Erich Wagner | Report spam
Hallo,

ich habe ein kleines Problem mit recode.
Ich möchte alle Dateien in einem Verzeichnis per Skript von latin1 nach
utf-8 codieren. Alle Dateien, die bereits UTF-8 codiert sind, soll aber
recode in Ruhe lassen. Kann das recode irgendwie, oder muss ich mich da
mit einer Programmiersprache herumschlagen?

recode latin1..UTF-8 /home/ewagner/test.php

gibt es eventuell etwas, dass man auf nach UTF-8 mit BOM umwandeln kann?

danke vorerst,
Erich
 

Lesen sie die antworten

#1 Heike C. Zimmerer
31/08/2007 - 14:46 | Warnen spam
Erich Wagner writes:

ich habe ein kleines Problem mit recode.
Ich möchte alle Dateien in einem Verzeichnis per Skript von latin1
nach utf-8 codieren. Alle Dateien, die bereits UTF-8 codiert sind,
soll aber recode in Ruhe lassen. Kann das recode irgendwie, oder muss
ich mich da mit einer Programmiersprache herumschlagen?



Du kannst eine UTF8-Datei nicht auf Latin 1 prüfen (jedenfalls nicht
ohne Wörterbuch). Das Problem ist, dass UTF-8 immer gültiges Latin-1
darstellt. Es liest sich bloß etwas eigenartig.

Aber andersrum wird ein Schuh daraus: Du kannst auf gültiges UTF-8
prüfen und, wenn nicht gültig, konvertieren. Das muss zwar nicht
100%ig hinhauen, ein Fehlschlag ist aber für deutsche Texte sehr
unwahrscheinlich:

cd Dein-Verzeichnis
for file in *; do
cp "$file" "$file.orig"
iconv -f utf8 -t iso8859-1 <"$file" >/dev/null 2>&1 || recode "$file"
done

Hintergrund: iconv bricht bei ungültigen Codes mit Fehlercode ab.

Wenn Du sicher bist, dass alles in Ordnung ist, kannst Du die .origs
(ggfs. ein anderes eindeutiges Pre- oder Suffix oder ein Verzeichnis
verwenden) löschen.

Ähnliche fragen