Verwandlung auf Befehl
Konvertierung auf der Shell
Mehrmals täglich anwenden
Beide Tools nehmen Dateien entweder direkt im Aufruf entgegen oder arbeiten als eine Art "Filter": Dann nehmen sie Daten aus der Standardeingabe entgegen und schreiben das Ergebnis auf die Standardausgabe (Abbildung 3). Geben Sie am Prompt beispielsweise
$ iconv -f UTF-8
ein, weiß das Tool, dass der Text, der nun kommt, in UTF-8 kodiert ist. Wenn Sie Sie den Text eintippen oder aus einer Anwendung heraus in die Shell kopieren und die Eingabe über [Strg]+[D] beenden, dann wandelt iconv ihn um und präsentiert das Ergebnis auf der Standardausgabe.
Dabei wählt das Programm in der Voreinstellung für die Ausgabe die Kodierung der eingestellten Locale (echo $LANG, [1]) des Systems. Steht diese beispielsweise auf de_DE@euro, präsentiert iconv das Ergebnis in ISO-8859-15 (Latin-9, enthält neben den in ISO-8859-1 gelieferten Zeichen auch das Euro-Zeichen).
Ähnlich arbeitet recode: Geben Sie recode utf8 ein, wartet das Programm auf einen Text in UTF-8-Kodierung; das voreingestellte Ausgabeformat ist ISO-8859-1 (Latin 1). Ist als Ausgabe etwas anderes gewünscht, geben Sie das bei iconv hinter der Option -t an, zum Beispiel über:
$ iconv -f UTF-8 -t MAC
Eine etwas andere Syntax erwartet recode: Hier übergeben Sie das Ausgabeformat durch zwei Punkte abgetrennt vom Eingabeformat (alte Programmversionen erwarteten einen Doppelpunkt), zum Beispiel:
$ recode utf8..latin9
Die Programme nehmen alternativ schon eine Datei zur Umwandlung beim Aufruf entgegen:
$ iconv -f UTF-8 utf8.txt
$ recode utf8..latin9 utf8.txt
Während iconv das Ergebnis in der Shell ausgibt, überschreibt recode das Original. Ausweg bieten die Umleitungsoperatoren der Shell [2]:
$ recode utf8..latin9 < utf8.txt > iso8859.txt
Ähnliches gilt für iconv; wer die Operatoren nicht einsetzen möchte, kann auf die Option -o ausweichen und dahinter die Ausgabedatei angeben:
$ iconv -f UTF-8 utf8.txt -o iso8859.txt
Fazit
Der Vorteil der Umwandlungskünstler für die Shell liegt auf der Hand: Wer eine große Anzahl von Dateien ans eigene System anpassen möchte, greift zu den bekannten Bash-Tricks:
$ for i in ~/download/*.txt; do recode utf8..lat9 $i; done
Hier sorgt eine kleine for-Schleife dafür, dass recode mehrere Dateien in einem Rutsch verarbeitet. Das funktioniert bei Bedarf natürlich auch mit iconv) sinngemäß.
[1] Umgebungsvariablen für die Bash: Heike Jurzik, "Gut eingerichtet", LinuxUser 05/2007, S. 88, http://www.linux-user.de/ausgabe/2007/05/088-zubefehl/
[2] Ein- und Ausgabeumleitung: Heike Jurzik, "Datenfluss", LinuxUser 07/2007, S. 94, http://www.linux-user.de/ausgabe/2007/07/094-zubefehl/



