Linux vermatscht Umlaute

Praxis & Tipps | Tipps & Tricks

Ich habe eine mit FAT32 formatierte externe Festplatte. Wenn ich unter Linux Dateien darauf kopiere und die Platte anschließend an einen Windows-Rechner stecke, sind alle Umlaute in den Datei- und Verzeichnisnamen durch merkwürdige Zeichen ersetzt. Unter Linux sieht aber alles normal aus.
Das FAT(32)-Dateisystem speichert Dateinamen als 16-bittige Unicode-Zeichen (UTF-16), Linux verwendet als Dateinamen dagegen Strings aus 8-bittigen Zeichen. Wenn Linux ein FAT-Dateisystem einbindet, muss der Kernel zwischen 16-Bit-Zeichen und 8-Bit-Zeichen übersetzen.

Moderne Linux-Distributionen kodieren Umlaute und überhaupt alle Zeichen in UTF-8. Aus historischen Gründen beherrscht der vfat-Treiber aber auch noch ISO-8859-1. Gibt man beim Mounten keine Optionen an, so hängt die Voreinstellung für die Zeichenkodierung von der Kernel-Konfiguration ab – anscheinend ist sie in Ihrem Fall ISO 8859-1. Wenn Sie auf ein so gemountetes FAT-Dateisystem Dateien mit UTF-8-kodierten Umlauten kopieren, entsteht das von Ihnen beobachtete Schlammassel.

Lösung: Geben Sie beim Mounten die Option -o iocharset=utf8 mit an, dann sollten die Umlaute heile bleiben. Wenn das Kind schon in den Brunnen gefallen ist, hilft eventuell das Perl-Skript convmv weiter, das vielen Distributionen beiliegt. Mounten Sie das Dateisystem wieder „falsch“ als ISO 8859-1. Falls Sie inzwischen mit einer anderen Distri-bution arbeiten, gelingt dies mit der Option -o iocharset=iso8859-1,utf8=no. Dann sollte der Aufruf

convmv -f utf-8 -t iso-8859-1 -r /Verzeichnis

testweise anzeigen, was er wie umbenennen würde, und es dann nach zusätzlicher Angabe von --notest auch tun. Siehe dazu auch die Manpage von convmv.

Anzeige
Anzeige