Wie kann ich mit * nix-Befehlszeilen-Tools mehrere Dateien in UTF-8-Codierung konvertieren?

118092
jason

Mögliches Duplizieren:
Batch-Konvertieren von Dateien zur Kodierung oder Zeilenende

Ich habe eine Reihe von Textdateien, die ich von einem bestimmten Zeichensatz in eine UTF-8-Kodierung konvertieren möchte.

Gibt es Befehlszeilentools oder Perl-Liners (oder eine Sprache Ihrer Wahl), die ich verwenden kann, um dies in Massen zu tun?

45

1 Antwort auf die Frage

55
Vinko Vrsalovic

iconv konvertiert viele Zeichenkodierungen. So fügen Sie ein wenig Bash-Magie hinzu und wir können schreiben

for file in *.txt; do iconv -f ascii -t utf-8 "$file" -o "$.utf8.txt" done 

Dies läuft iconv -f ascii -t utf-8auf jede Datei mit der Endung .txt, die umcodiert Datei in eine Datei mit dem gleichen Namen zu senden, aber bei der Beendigung .utf8.txtstatt .txt.

Es ist nicht so, als würde dies tatsächlich etwas mit Ihren Dateien tun (weil ASCII eine Untermenge von UTF-8 ist), sondern um Ihre Frage zu beantworten, wie zwischen Kodierungen konvertiert werden soll.

Sie sollten die Variable $ i angeben, um Dateinamen mit Leerzeichen zu behandeln. Richard Hoskins vor 14 Jahren 2
Es wird Dinge tun, es wird eine Stückliste hinzufügen ... jason vor 14 Jahren 0
Sind Sie sicher, dass iconv eine Stückliste hinzufügt? Ich hatte den Eindruck, dass es mit UTF-8 nicht geht. Richard Hoskins vor 14 Jahren 0
Ich habe dies gerade mit iconv (GNU libiconv 1.11) getestet, und es wurde keine Stückliste hinzugefügt. Ich verstehe, dass iconv nur dann eine Stückliste hinzufügt, wenn eine in der Eingabe vorhanden ist, die nicht in ASCII enthalten wäre. Stücklisten sind problematisch und bei UTF-8 nicht erforderlich. Richard Hoskins vor 14 Jahren 4
Zu Ihrer Information, Windows neigt dazu, Stücklisten in allen Unicode-Dateien, auch in UTF-8, zu löschen. Dies kann in Notepad durch Auswählen der Kodierung im Dialogfeld "Speichern unter" angezeigt werden. Die Liste "Unicode", "Unicode Big Endian" und "UTF-8" enthält zusätzlich zur klassischen "ANSI" -Codierung. Alle außer ANSI enthalten eine Stückliste. RBerteig vor 14 Jahren 0
iconv folgt dem Prinzip der geringsten Überraschung, keine Stückliste bei der Eingabe, keine Stückliste bei der Ausgabe. Vinko Vrsalovic vor 14 Jahren 0
Wenn Ihre Version von iconv den Parameter -o nicht unterstützt, können Sie ihn direkt durch >> ersetzen, um die Shell-Umleitung zu verwenden. rob vor 8 Jahren 2