Konvertieren Sie viele Dateien in dieselbe Kodierung

583
mnml

Ich möchte sicherstellen, dass alle meine Dateien in UTF-8 in einem großen Projekt-Repository korrekt codiert sind. Gibt es dafür ein Werkzeug oder eine Möglichkeit, dies mit Unix-Werkzeugen zu tun?

1

1 Antwort auf die Frage

1
sleske

Im Allgemeinen gibt es keine Möglichkeit, dies zu tun. UTF-8 hat keine "magische Zahl" oder Markierung, so dass Sie nur nachweisen können, dass sich eine Datei nicht in UTF-8 befindet (wenn sie ungültige Sequenzen enthält), aber nicht, dass sie vorhanden ist.

Sie können jedoch einen heuristischen Ansatz verwenden. Was genau funktioniert, hängt von Ihren Daten ab.

Eine idee:

  • Erstellen Sie eine Liste aller Dateien, die Textdateien sind und Nicht-ASCII-Zeichen enthalten. Der zweite Teil lässt sich leicht mit Perl oder ähnlichem ausführen. Die erste hängt davon ab, welche Dateien Sie haben. Unix fileprüft auch auf Nicht-ASCII-Zeichen, ist jedoch weniger zuverlässig (prüft nur den Start der Datei).
  • Wenn die Liste klein ist, überprüfen Sie die Dateien manuell. Ansonsten prüfen Sie, welche UTF-8-Werte gültig sind (wiederum hat Perl Module dafür oder verwendet ein Werkzeug wie iconvoder recode). Die gültigen UTF-8-Dateien sind wahrscheinlich in Ordnung. Der Rest muss von Hand überprüft werden (es sei denn, Sie wissen genau, wie sie codiert sind).