Kategorie PHP

Deutsche Umlaute in PHP

Lesezeit ca. 2 Min.

Deutsche Umlaute in PHP können manchmal immer noch Probleme in der Programmierung bereiten.

Beim Entwickeln unter Windows 7 wollte ich eine Datei – nennen wir sie „müller.pdf“ – mit der PHP Funktion rename() umbenennen. Darauf gab mir der PHP Interpreter die Warnung aus:

„Das System kann die angegebene Datei nicht finden.“

Und dies, obwohl die angegebene Datei in dem aktuellen Verzeichnis tatsächlich vorhanden war. Eine Diskussion mit dem Computer wäre nicht zielführend, also musste es einen Grund geben, warum PHP die Datei nicht findet.

Der zweite Versuch war zu prüfen, ob für PHP die Datei vorhanden ist. Dies prüft man mit der Funktion file_exists(). Und siehe da, die Funktion gibt ein FALSE zurück. Damit war klar, daß für PHP die Datei nicht existiert. Der einzige Grund für dieses seltsame Verhalten konnte eigentlich nur der Umlaut „ü“ im Dateinamen sein.

Jetzt gibt es in PHP die Funktion utf8_decode(), mit dem man utf8-kodierte Zeichen – wie der Funktionsname es vermuten lässt – dekodieren kann. Wendet man diese Funktion auf den Dateinamen an und prüft jetzt nochmals auf Vorhandensein, so ist das Ergebnis positiv.

Mit diesem kleinen Kniff konnte ich dann letztendlich die Datei mit deutschem Umlaut auch umbenennen. Hier das ganze nochmals im Source Code:


$orgFilename = utf8_decode('müller.pdf');
$newFilename = 'mueller.pdf';

if (!file_exist($oldFilename) {
  throw new Exception('Quelldatei ist nicht vorhanden!');
}

rename($oldFilename, $newFilename);

Ähnliche Artikel:

Fragen oder Feedback zu diesem Artikel

Deine E-Mail-Adresse wird nicht veröffentlicht.