Programmieren - alles kontrollieren 4.934 Themen, 20.613 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
eugeniak1 uspc „Hallo, hab auch direkt eingegeben, also hartcodiert. In der ...“
Optionen

- Die Datenbank, Tabellen, Spalten sollten jeweils auf utf8_ci gestellt werden
- Die Datenbank-Verbindung muss mit SET NAMES utf8 auf UTF-8 gesetzt werden (häufiger Fehler)
- Die PHP-Skripte sollten in der Entwicklungsumgebung/dem Editor als UTF-8-Datei abgespeichert werden (ohne UTF-8 BOM).
- Das PHP-Skript sollte entsprechend einen HTTP-Header senden: header("Content-type:text/html; charset=utf-8");
- Die HTML-Seiten sollten zusätzlich noch einen gleichlautenden <meta>-Tag anführen: <meta http-equiv="content-type" content="text/html; charset=utf-8" />

Der erste Punkt kann über phpMyAdmin's Strukturansicht der Datenbank, der Tabellen und der Spalten überprüft werden,
die letzten beiden Punkte können im Browser überprüft werden: Firefox->Ansicht->Zeichenkodierung->Unicode UTF-8 (?)

Wenn nun weiterhin falsche Zeichen dargestellt werden, wurde mindestens ein Punkt nicht beachtet, oder es sind bereits fehlerhafte Daten aus der Datenbank, einer Datei oder dem PHP-Skript/HTML-Seite eingebunden oder durch eine Konvertierung der Maßnahmen erzeugt worden.

Das ist von http://www.php.de/datenbanken/55699-umlaute-mysql-datenbank.html#post430223

Sorgfältig nochmal den Namen der Datei überprüfen. Manchmal tippt man falsch und PHP oder MySQL nimmt das als Befehl.  Bei mir ist so was schon mal geschehen-

bei Antwort benachrichtigen