Dateinamen in UTF8 konvertieren

Für bestimmte Programme ist es notwendig, UTF8 als Locale zur Zeichenkodierung im System einzusetzen, um Umlaute korrekt darzustellen. Eines davon ist Sickbeard. Wie aber findet man die aktuell verwendete Locale heraus? Ein kurzes Pythonskript hilft.

#!/usr/bin/python
import chardet
import os

for n in os.listdir('.'):
    print '%s => %s (%s)' % (n, chardet.detect(n)['encoding'], chardet.detect(n)['confidence'])

Eine Ausgabe sieht wie folgt aus. Dabei gibt der Wert in Klammern die Wahrscheinlichkeit des angegebenen Zeichensatzes an.

secops_wascii_asd.odt => ascii (1.0)
client_übergabe.odt => EUC-JP (0.99)
pg_seminar1_präsentation.odp => EUC-KR (0.99)

Um alle Dateinamen in einem Verzeichnis einheitlich in einen Zeichensatz zu konvertieren, bietet sich das Programm convmv an, das wie folgt installiert werden kann.

apt-get install convmv

Im ersten Schritt wird convmv im Simulationsmodus aufgerufen, um die neuen Dateinamen prüfen zu können. Sind die neuen Dateinamen in Ordnung, können sie übernommen werden.

convmv -f iso-8859-2 -t utf8 ./*.txt
convmv -f iso-8859-2 -t utf8 ./*.txt --notest

Nach Abschluss der Konvertierung bleibt die Umstellung des voreingestellten Zeichensatzes des Systems.

dpkg-reconfigure locales

Dort wird de_DE@UTF8 ausgewählt.