Wenn Dateien von Windows auf einen Linuxserver (oder OS mit UTF8) kopiert werden, kann es vorkommen dass Umlaute und Sonderzeichen falsch dargestellt werden.
Ich hatte das Problem mit Exporten einer SQL Datenbank. Beim Importieren in eine MySQL Datenbank wurden trotz aller Charseteinstellungen auf UTF8 die Umlaute falsch dargestellt.
Das liegt daran, dass die Dateien von Windows (oder der Datenbank) als CP1252 codiert waren. Mit folgendem Batchscript können alle Dateien eines bestimmten Ordners von C1252 in UTF8 umgewandelt werden.
FROM=CP1252 TO=UTF-8 ICONV="iconv --from-code=$FROM --to-code=$TO" find /path/to/folder/ -type f -name "*" | while read fn; do cp ${fn} ${fn}.bak $ICONV < ${fn}.bak > ${fn} rm ${fn}.bak done
Wer nur eine einzelne Datei konvertieren will, kann folgenden Befehl ausführen:
iconv --from-code=CP1252 --to-code=UTF-8 wrongcharacter.txt > utf8character.txt
LuckyEddy meint
Das geht auch mit dem Befehl „convmv“ (ist über die Debian-REPOs verfügbar).
MyKe meint
fisrst mal Gracias für den Script, wäre evtl. noch gut wenn Du es erweiterst, falls jemand auch gleich Unterdirectories mitchangen will.