• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Umlaute im IE darstellen

Status
Für weitere Antworten geschlossen.

hades

Neues Mitglied
Normaler Weise bin ich mit solchen Kleinigkeiten nicht dermaßen überfordert, aber seit ein paar tagen hänge ich jetzt an diesem Problem fest.

Ich programmiere derzeit eine html-und-php-kombinierte Site mit einer Bildergalerie, welche Bilder, Titel und Beschreibungen aus einer DB auslesen und auf dem screen auswerfen soll. Im php-part versuche ich nun einen zusammengesetzten String aus Strings aus der Datenbank, darzustellen.:

PHP:
if (!$fehleingabe)
   { connecting(HOST,ADMINUSER,ADMINPASSWD);
     DB_verbinden();

     $query = "select b_id, titel, pic, text, datum, anlass from bildergalerie where rubrik = '".$path_to_images."' order by pic";
     $ergebnis = mysql_query($query);

     if ((mysql_num_rows($ergebnis)) > 0)
     { 
    while($new = mysql_fetch_array($ergebnis))
        { 

            if($new[2] == $item[0])
        {
        $item[1] = $new[4]." - ".$new[5].": ".$new[1];
        $lang_img_hover = $new[3];
        }

        }
     }
     else
     { 
       echo "<p>Keine Eintr&auml;ge in der Tabelle \"bildergalerie\" gefunden.</p>";
     }
      
   }
   else
   { 
     echo "<p class=\"fehlermeldung\">FEHLER<br>$fehlertext</p>\n";
   }

Das Feld item enthält die Daten des Applets auf dem ich mein Ergebnis anzeige.

Mein Problem ist nun, dass der Internetexplorer mir die Zeichenketten aus der Datenbank nicht korrekt anzeigt, er stellt nämlich die Umlaute der Ketten als kryptischen Wust dar. Im Firefox und Netscape läuft es tadellos. Wenn ich einen String direkt per php in die Variablen des Feldes setze ohne ihn aus der Db auszulesen, dann zeigt IE die Umlaute direkt an, kommt der String allerdings aus der Datenbank, so werden die Umlaute als vierecke dargestellt und auch andre Buchstaben am Umlaut mit weggeschnitten.

Ich finde einfach keine Lösung dafür, bitte helft mir.
 
Zuletzt bearbeitet von einem Moderator:
Das ist ein Sprachregionsproblem:
Ich werde keine allzu große Hilfe sein und ich glaube das könnte auch schon eher in die PHP Sektion hingehören,
worin ich weniger konform bin. Du kannst entweder im HTML Kopf, explizit den Sprachraum festlegen:

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

: was dann hoffentlich dazu führt das auch, dieser sehr häufig rum spinnende, IE die Umlaute ausgibt
oder aber Dich in der PHP Sektion einführen läßt in die Funktion: str_replace, die es Dir erlaubt Zeichen
gegen andere, nach vorheriger Definition dieser Zeichen ( bei Dir wären es die Umlaute ) automatisch zu tauschen.
Aber das ist noch nicht ganz mein Ding.
 
Zuletzt bearbeitet:
Vorerst danke in die Einführungen ins Internetprogrammieren, aber wie ich schon schrieb bin ich normaler Weise nicht so ratlos und habe damit schon einige Zeit Erfahrung.

"<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">"

"benutz utf8 und mache richtige doctype angaben.
dann passiert sowas erst garnicht "

Da liegst Du erstmal so richtig falsch, freak131.

Schon versucht mit den charsets ISO-8859-1, utf8, windows-1252 daran wird es nicht liegen, denn mit charset windows-1252 laufen auch alle anderen Sites unseres Spaces problemlos.

Und nen krasseren Anfängerfehler als keine bzw. falsche Doctype kann man mir jawohl auch nicht unterstellen, mir wäre lieber ihr würdet da nochmal mit etwas mehr Phantasie drüberschauen, ich würde hier nämlich nicht fragen, wenn ich die simpelsten Kisten nicht schon überprüft hätte.

"str_replace"

Danke für den Tip SerArris, aber das war gleich mein zweiter Gedanke gewesen und ich habe ebenfalls versucht die Umlaute durch ihren html-Ausdruck zu ersetzen, aber das hatte für die Darstellung der in Php dynamisch erzeugten html-site keinen Effekt.
 
Bei der Ausgabe von Datenbankinhalten kommt es auch drauf an mit welchem Zeichensatz diese in der Datenbank gespeichert wurden und wie die Datenbank angesprochen wird. Die Infos sehe ich bei dir leider nicht, vielleicht ist es das was du übersehen hast?

Außerdem: die Ausgabe von Text würde ich mittels htmlspecialchars() machen um Sonderzeichen richtig zu formatieren.

Weitere Möglichkeit: im Serverheader wird ein anderer Zeichensatz zurückgegeben als du im HTML angegeben hast und auch verwendet hast. Kann man z.B. mit der Firefox-Erweiterung LiveHeaders prima prüfen.

windows-1252 als Zeichensatz ist heutzutage keine gute Wahl. Würde ich an deiner Stelle ändern (zumindest bei neuen Projekten dann).

Und @freak131: der Doctype hat keinen Einfluss auf den Zeichensatz.
 
Danke erstmal threadi. Ich versuch ich mal htmlspecialchars().
Eigentlich dachte es wäre klar gewesen, dass ich die Verbindung zur Db per sql herstelle, sieht man ja oben im Quelltext und mysteriös ist halt, dass ich auch andere Seiten per php und db-informationen zusammenstelle, nur hier macht es Probleme.

Danke nochmals für die Unterstützung, Jungs und speziell threadi, für den hilfreichen Denkanstoß. Hab mein Zeichenproblem jetzt mit htmlentities lösen können.
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben