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
file
prü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
iconv
oderrecode
). 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).