Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

PHP: Bilder anzeigen, Dateiname enthält Umlaute

uspc / 11 Antworten / Flachansicht Nickles

Hallo, ich möchte mit img src ein Bild auf einer Website darstellen. Der Dateiname enthält ein Umlaut, das soll auch so bleiben. In meiner Scriptdatei ist alles in UTF-8 getrimmt.

Im Head hab eich  charset=utf-8, die Scriptdatei ist UTF-8 kodiert, dann lese ich die Dateien aus einem Verzeichnis aus (Linux-Server):

while ($quelle = readDir($handle)) {         // Verzeichnis auslesen 

in $quelle stehen noch die komischen Zeichen. Das ändere ich mit:
  $datei = utf8_encode($quelle);

Jetzt hat $datei zeigt die korrekten Zeichen, also zB. Müller.jpg

Genauso heisst die Bilddatei. Das Bild wird aber nicht angezeigt. Ohne Umlaute ist alles ok. Der Dateiname wird sogar mit title='$datei'  korrekt angezeigt, also mit ü.   Ich habe schon versucht, alle Dateien mit str_replace("ü", "ue", $datei) umzubenennen, das geht nicht. Wäre auch nicht die Ideallösung, das die Namen der Bild-Dateien erhalten bleiben sollen.

Was habe ich nicht bedacht?  Vielen Dank! uspc

bei Antwort benachrichtigen
Borlander uspc „Hallo Borlander, ich habe var utf8_encode var gesetzt. Der ...“
Optionen

Hast Du schon mal probiert ob das ganze hartcodiert funktioniert?

Wenn es allerdings schon daran scheitert, dass Du die Datei auch bei korrekter Eingabe der URL nicht aufrufen kannst stellt sich mir folgende Frage: Wie kommt die Datei auf den Server? Ist an dieser Stelle sichergestellt, dass die Zeichensatzcodierung korrekt umgesetzt wird bzw. eine Umcodierung stattfindet falls Quell und Zielsystem unterschiedliche Codierungen verwenden. Sonst gehen Umlaute womöglich schon beim Dateitransfer kaputt…

Ich verwende auch lokal keine Umlaute und Sonderzeichen (also eigentlich nur Groß- und Kleinbuchstaben, Ziffen, Punkt, Unterstrich, Minus) in Dateinamen weil das über Systemgrenzen hinweg auch heute noch immer wieder mal Ärger bereitet :-|

Gruß
Borlander

bei Antwort benachrichtigen