Die Zeichenkodierung UTF-8 ist in vielen Projekten der Standard, auf den man setzen sollte. Doch was tun, wenn manchen ältere Programmteile noch in einer anderen Kodierung vorliegen, wie ISO-8859 oder einem Windows-Zeichensatz?
Wenn Sie also zum Beispiel auf ein Skript stossen, bei dem die deutschen Umlaute falsch kodiert sind, dann müssen Sie den Zeichensatz umstellen.
Zwar unterstützen einige Editoren oder IDEs die Umwandlung einzelner Dateien. Die komplette Konvertierung eines ganzen Unterverzeichnisbaums mit allen Programmdateien wird aber fast nie angeboten.
Haben Sie Zugriff auf ein Linux-System können Sie alle Umwandlungen bequem einzeln oder auf einen Rutsch erledigen lassen.
So konvertieren Sie unter Linux einzelne Dateien
Recode ist ein Programm für die Linux-Shell, das sich eine Textdatei vornimmt, eine Zeichensatzumwandlung durchführt und die Ausgangsdatei mit der geänderten Version überschreibt.
Angenommen, Sie haben ein PHP-Skript namens myprog.php, das noch den Zeichensatz ISO-8859-1 (Latin-1) verwendet.
Mit folgender Zeile wandeln Sie dieses Skript in das Format UTF-8 um:
recode latin-1..utf-8 myprog.php
Alle von recode unterstützten Zeichensätze erhalten Sie per
recode -l
Kennen Sie die ursprüngliche Zeichenkodierung nicht, können Sie das Linux-Tool file verwenden, das Ihnen neben dem Dateityp auch die Kodierung verrät:
file myprog.php
Treten in einer Datei Umlaute oder Sonderzeichen aus mehreren Zeichensätzen vermischt auf, kann Ihnen recode allerdings nicht helfen und Sie müssen die Probleme von Hand in Ihrem Editor auflösen.
So konvertieren Sie mehrere Dateien auf einmal
Recode selbst kann nicht mit mehreren Dateien umgehen. Zusammen mit dem Kommando find erhalten Sie aber eine Lösung, um mehrere Dateien innerhalb eines Verzeichnisbaums umzustellen.
Möchten Sie zum Beispiel alle PHP-Dateien im aktuellen Verzeichnis und seinen Unterordnern von Latin-1 nach UTF-8 konvertieren, dann schreiben Sie:
find . -name '*.php' -exec recode latin-1..utf-8 {} \;