Umlaut Problem mit SQL / PHP ( %6D = Ö )

sandroP

Erfahrenes Mitglied
Hallo,
Das Script wählt automatisch eine passende Grafik aus, das funktioniert soweit auch.

Das Problem:

Wenn ein Ort z.B. Überlingen oder Öhningen heisst, funktioniert es im Explorer nicht mehr. Der Explorer sucht dann nach "%6Dhningenseeklein". Hat jemand ne Idee oder nen Tipp wo sich der Fehler versteckt?


PHP:
                    <?PHP

$kundennummer = isset($_GET["kundennummer"]) ? $_GET["kundennummer"] : null;
include "PASSWORT";
$sqlab = "SELECT * FROM gastgeber";
$sqlab .= " WHERE kundennummer = '".$kundennummer."'";
$res = mysql_query($sqlab);
   while ($zeile = mysql_fetch_assoc($res))

echo "<img src='bodenseekarte/$zeile[aort]seeklein.jpg' width='165' height='97' border='0'>"; 


?>


Vielen Dank schonmal.
 
Nicht-ASCII-Zeichen sollten erst mit UTF-8 und dann mit der Prozent-Kodierung kodiert werden. Wenn die Daten also in ISO 8859-1 vorliegen:
PHP:
echo "<img src='bodenseekarte/".rawurlencode(utf8_encode($zeile['aort']))."seeklein.jpg' width='165' height='97' border='0'>";
 
Erst mal Danke,
leider geht das so nicht.

So sieht es jetzt bei mir aus:

<?PHP

$kundennummer = isset($_GET["kundennummer"]) ? $_GET["kundennummer"] : null;
include "zugang/inc.php";
$sqlab = "SELECT * FROM gastgeber";
$sqlab .= " WHERE kundennummer = '".$kundennummer."'";
$res = mysql_query($sqlab);
while ($zeile = mysql_fetch_assoc($res))

echo "<img src='bodenseekarte/".rawurlencode(utf8_encode($zeile['aort']))."seeklein.jpg' width='165' height='97' border='0'>";

?>


Im Mozilla wird folgendes Ausgegeben, und das Bild wird angezeigt.
...ekarte/%DCberlingenseeklein.jpg


Im Explorer wird folgendes Angezeigt, und KEIN Bild angezeigt.
...ekarte/Überlingenseeklein.jpg
Die Datei-Grafik heisst -- Überlingenseeklein.jpg ---


Muss ich das verstehen warum das nicht geht?

______________________________________

Ach ja, wenn ich in der Datenbank "Ueberlingen" anstannt Übe... scheibe, geht es im EX und im Moz.
Das Bild heisst auch hier noch Überlingenseeklein.

EXP: ....denseekarte/Ueberlingenseeklein.jpg
Moz: ...enseekarte/Ueberlingenseeklein.jpg
 
Zuletzt bearbeitet:
Die Datei-Grafik heisst -- Überlingenseeklein.jpg ---


Muss ich das verstehen warum das nicht geht?

Mein Tipp, verzichte auf Umlaute und andere Sonderzeichen in Dateinamen. Moderne Browser sollten das zwar auf die Reihe bekommen, aber viele surfen noch mit älteren Modellen und man erspart sich viel Ärger wenn man auf Umlaute, ß, Leerzeichen usw. verzichtet.

Ach ja, wenn ich in der Datenbank "Ueberlingen" anstannt Übe... scheibe, geht es im EX und im Moz.
Das Bild heisst auch hier noch Überlingenseeklein.
Hast wahrscheinlich einen schlauen Webserver, der wenn er ue nicht findet nach ü sucht. War mir bisher auch noch nicht bekannt, fände ich aber ehrlich gesagt auch unschön sich auf so ein Feature zu verlassen.

Grüße
Herbert
 
Die Frage ist eher, ob der Webserver damit etwas anfangen kann. Denn wenn sämtliche Nicht-ASCII-Zeichen kodiert sind, sollten auch ältere Browser damit keine Probleme haben.

Wie sind denn die Daten in der Datenbank kodiert?
 
Was würdest du generell empfehlen bei Dateinamen, Gumbo? Ä,Ö,Ü oder Ae,Oe,Ue?

Ich schreibe meine Dateinamen immer Ae,Ue,Oe und statt ß einfach ss. So bekomme ich erst keine Probleme.
 
Sicherer ist es natürlich nur ASCII-Zeichen zu verwenden. Wenn jedoch andere Zeichen verwendet werden sollen, sollten diese UTF-8 kodiert und anschließend mit der Prozent-Kodierung kodiert werden.
 
Die Funktionen zur Prozent-Kodierung (auch URL-Kodierung genannt) sind rawurlencode() und rawurldecode().
 
Zurück