Hallo zusammen.
Ich weiß, dieses Thema wurde zwar schon des Öfteren hier im Forum angesprochen, aber ich habe noch keine zufriedenstellende Lösung gefunden. Ausserdem meine ich, dass die bisher beschriebenen Probleme mit Sonderzeichen eher die reine Anzeige der Beschreibung, Bildtitel etc. zum Thema hatten, welches Nicky mit der jeweiligen Encodierung der Datenbank erklärt hat.
Ich habe allerdings folgendes Problem: Wenn ein Bild im
Dateinamen bereits ein Sonderzeichen enthält (also bspw.
Täßt Image.jpg (absichtlich keine korrekte deutsche Rechtschreibung
)), so wird die Datei im ACP bei "Check new Images" bereits falsch encodiert dargestellt.
Hier ein kleiner Screenshot, der dies erklärt:
Ein Klick auf den Link zum Bild an dieser Stelle führt logischerweise auch nicht zum Ziel.
Wenn das Bild in der DB gespeichert wird, sieht das Ergebnis folgendermaßen aus:
Titel, Beschreibung, Tags sehen alle gut aus, nur der Dateiname ist falsch encodiert.
Um dem auf den Grund zu gehen, habe ich mir im ACP das Checkimage Formular in der Detailsicht einmal angesehen:
http://img262.imageshack.us/img262/4442/20090826093135.jpg(wegen der Lesbarkeit des Threads als Hyperlink eingefügt)Daraufhin habe ich mir die
checkimages.php genauer angesehen.
(Hinweis: ich habe die bereits modifizierte Version 2.6.2 aus folgendem Thread verwendet
http://www.4homepages.de/forum/index.php?topic=19926.0)
Daraufhin habe ich folgende Modifikationen vorgenommen:
Finde:
$file_type = get_file_extension($image_list[$key][$i-1]);
$auto_iptc_now = ($imageinfo = @getimagesize(MEDIA_PATH.$cat_path."/".$image_list[$key][$i-1], $info) && $auto_iptc) ? 1 : 0;
$image_name = get_file_name($image_list[$key][$i-1]);Ersetze durch:
$file_type = get_file_extension(utf8_decode($image_list[$key][$i-1]));
$auto_iptc_now = ($imageinfo = @getimagesize(MEDIA_PATH.$cat_path."/".utf8_decode($image_list[$key][$i-1]), $info) && $auto_iptc) ? 1 : 0;
$image_name = utf8_decode(get_file_name($image_list[$key][$i-1]));Finde:
show_table_separator("<input type=\"checkbox\" name=\"addimage_".$ii."\" value=\"1\"".$checked." /> ".$image_list[$key][$i-1], 2);Ersetze durch:
show_table_separator("<input type=\"checkbox\" name=\"addimage_".$ii."\" value=\"1\"".$checked." /> ".utf8_decode($image_list[$key][$i-1]), 2);Finde:
$file_src = MEDIA_PATH.$cat_path."/".$image_list[$key][$i-1];Ersetze durch:
$file_src = MEDIA_PATH.$cat_path."/".utf8_decode($image_list[$key][$i-1]);Finde:
show_hidden_input("image_media_file_".$ii, $image_list[$key][$i-1]);Ersetze durch:
show_hidden_input("image_media_file_".$ii, utf8_decode($image_list[$key][$i-1]));Finde:
$link = "<a href=\"".MEDIA_PATH.$cat_path."/".$image_list[$key][$i-1]."\" target=\"_blank\">".$image_list[$key][$i-1]."</a>";
show_hidden_input("image_media_file_".$ii, $image_list[$key][$i-1]);Ersetze durch:
$link = "<a href=\"".MEDIA_PATH.$cat_path."/".utf8_decode($image_list[$key][$i-1])."\" target=\"_blank\">".utf8_decode($image_list[$key][$i-1])."</a>";
show_hidden_input("image_media_file_".$ii, utf8_decode($image_list[$key][$i-1]));Hinweis: Ein Version der checkimage.php jeweils vor und nach dieser Modifikation habe ich als Datei angehangen.
Nach den Änderungen sieht das Ergebnis auf der ACP Seite so aus:
http://img507.imageshack.us/img507/7880/20090826094954.jpg(wegen der Lesbarkeit des Threads als Hyperlink eingefügt)Bis auf die ITPC Informationen, die seltsamerweise bei dem Bild mit Sonderzeichen (und nur bei diesem) fehlen, sieht das Ergebnis eigentlich recht gut aus!
Der Datenbankeintrag stellt mich auch soweit zufrieden:
Allerdings erscheint beim Aufruf der Testseite:
http://www.pawlikonline.de/temp/4images/details.php?image_id=36 eine 404er Fehlermeldung, obwohl ein Aufruf im Browser auf das Bild direkt (
http://www.pawlikonline.de/temp/4images/data/media/3/Täßt Image_01.jpg) funktioniert.
Nun befinde ich mich aber langsam in einer Sackgasse
Es müsste nachgeforscht werden, weswegen
a) die ITPC Informationen nicht aus den Metainformationen des Bildes gezogen werden. (Hängt vermutlich mit meinen Änderungen an der checkimages zusammen, aber ich sehe den Fehler nicht).
b) Wieso wird das Bild nicht angezeigt, trotz korrekter Speicherung des Dateinamens in der Datenbank. Ich vermute noch ein paar notwendige Anpassungen an der functions.php. Dort die Methoden get_file_path und get_media_code. Jeweils die ersten Parameter erhalten den Dateinamen, der evtl. wieder encodiert werden müsste. Allerdings bin ich dort noch auf keinen grünen Zweig gekommen.
Wenn sich jemand an der Stelle besser auskennt und wüsste was zu ändern ist - ich wäre überaus dankbar!
Viele Grüße und meinen Dank an diejenigen, die sich die Mühe gemacht haben diesen Post komplett durchzulesen
Bash-T