dedlfix: Ursachenbekämpfung bei Dateinamen mit "äöü"

Beitrag lesen

Tach!

Ich lese mit einem PHP-Script Verzeichnisse und Dateien aus und wandle sie für die Anzeige mit utf8_encode. Wenn ich jedoch damit ein Adress-Element bilde, wird die Datei nicht gefunden. Ich müsste auf dem Client wieder zurückwandeln können, aber das scheint leider nicht einfach möglich zu sein.

Das Problem hört ja nicht bei äöü nebst ÄÖÜ und ß auf. Für die Anzeige kannst du ja utf8_encode() nehmen. Wenn du diese Funktion verwenden musst, um Umlaute richtig angezeigt zu bekommen, scheint es so, dass dein Dateisystem ISO-8859-1 liefert. Leider ist nicht festgelegt, welche Kodierung das Dateisystem verwendet, und mir ist auch keine Abfragemöglichkeit bekannt. Da PHPs Stringfunktionen aber byteweise arbeiten, ist das eigentlich auch egal. Um den Dateinamen zu erhalten (im Sinne von konservieren), so wie er kommt, solltest du urlencode() oder rawurlencode() anwenden, bevor du daraus eine Adresse bildest. Dann hast du nur noch ASCII und nichts sollte verloren gehen. - Wenn dieses Adress-Element wieder zurück zum Server geschickt wird, dekodiert PHP von selbst die URL-Kodierung, und du solltest wieder in die Bytefolge erhalten, die du aus dem Dateisystem gelesen hast.

dedlfix.