Umlaute-Problem

ByteDigger

Mitglied
Hallo zusammen,

ich lese per PHP Daten aus MySQL aus und gebe sie auf eine Webseite wieder.
Dabei treten Fehler mit Umlauten auf.

Jetzt würde mich interessieren, wo der Fehler liegt:
1. Übergibt MySQL die Umlaute falsch, obwohl sie richtig drinstehen?
2. Kann PHP keine Umlaute?
3. Oder ist HTML nicht in der Lage, wenn keine Sonderzeichen vorkommen (so wie nbsp; statt Leertaste usw..)

Über htmlentities() kann ich mittlerweile Umlaute korrekt ausgeben.
Nur ein Vergleich einer Eingabe mit dem MySQL Wert geht ums verrecken nicht.
Code:
if ($eingabe == $res['stadt']) ...     // Eingabe kommt von einem Formular eine Seite vorher
// auch hier wurde htmlentities() in allen Variationen probiert

Wäre super wenn jemand eine Lösung dafür wüsste... mfg Byty
 
Soweit ich weiss hat mySQL keine Probleme mit Umlauten und co bei standardmässiger Konfiguration des Servers.
Zu den Leerzeichen, HTML stellt alles ab 2 leerzeichen nicht da, sprich drei Leerzeichen als beispiel müssten mit Leerzeichen und 2 mal & nbsp; o.ä. dargestellt werden.

Zeig doch mal etwas mehr Code damit man sich etwas reindenken kann,
denn so kann ich zumindest keinen Fehler feststellen.

Nur eine Anmerkung wenn $eingabe vom Formular kommt solltest du diese Daten auch per $_GET['eingabe'] oder $_POST['eingabe'] (je nach Formularmethode, beides zusammen also POST und GET geht per $_REQUEST['eingabe']) auslesen und auf register_globals verzichten!
 
Hier mein Kennzeichen-Ratespiel


Nun die Seite mit der Eingabe. Eine Frameseite (HTML weggelassen) die oben ist. Die Lösung bildet den unteren Frame der Frameseite..

Code:
echo "<form action=\"down.php\">";
// method="post" bzw "get" funktionierte nicht...
echo "<input type=\"hidden\" name=\"num\" value=\"".$zahl."\">";
// verstecktes Feld für Datensatz-Nummer
echo "".htmlentities($res'kennzeichen'])."";
// Ausgabe Kennzeichen
echo "Eingabe:&nbsp; </b><input type=\"text\" name=\"eingabe\" size=\"20\">
// Eingabefeld 
echo "<input type=\"submit\" value=\"Abfragen\" onClick="self.location.href='top.php'></p>";
// Absenden - Button, onClick damit die Seite neu geladen wird da dann ein neues,anderes Kennzeichen dasteht zum raten
echo "</form>";

Die Seite die die Übergaben erhält. Eigentlich ein Fußframe der anzeigt ob richtig oder falsch..

Code:
<?php

include ("_private/connect_info.php.inc");

// Auslesen der Variablen aus URL klappt auch
$num = $HTTP_GET_VARS['num'];

$eingabe = $HTTP_GET_VARS['eingabe'];

echo "$num $eingabe";  // Probeausgabe was übergeben wird, geht einwandfrei

if ($num != NULL)  // Behandelt den ersten Rateversuch da da ja noch keine $num übergeben wird, ergo braucht auch keine Lösung angezeigt werden...
{
	$res = mysql_query("SELECT *,anzahl_richtig/anzahl_geraten AS  
                     quote FROM ".$mysqltable." WHERE id=".$num."");
	// Datensatz mit der id suchen
                     $res = mysql_fetch_array($res);

	if ($eingabe == $res['stadt'])  // Textvergleich ob Eingabe mit Stadt übereinstimmt 
// hier scheint es zu happern, der Vergleich ist stets false, also falsch...
	{
		$wf = "richtig";
		// hier normalerweise Anweisung anzahl_geratene und anzahl_richtig um eins erhöhen
	} else
	{
		$wf = "falsch";
	                     // hier normalerweise Anweisung anzahl_geraten++
	}
...
...
echo "".htmlentities($res['kennzeichen'])." = ".htmlentities($res['stadt'])."";
// Testausgabe zur Kontrolle,  mit Umlauten
..
 
Zuletzt bearbeitet:
Was mir grad auffällt.

Wenn ich die Seite direkt mit folgendem Link aufrufe:

http://my_server/down.php?num=11&stadt=altötting

Dann funktioniert der Vergleich. Dann kommt das richtige Ergebnis raus.
Rufe ich die Seite aus dem Formular aus mit diesen Eingaben auf, kommt immer das falsche Ergebnis.

Mir scheint es an der Übergabe zu scheitern obwohl die Probeausgabe (in down.php echo "$num $eingabe" ) direkt am Anfang das richtige anzeigt, auch ohne htmlentities... komisch

Ich weis jetzt nicht mehr weiter..
 
Angegeben wurde kein Zeichensatz im HTML-Code...
Ich hab in Frontpage mal geschaut und da wird standardmäßig ein charset namens "windows-1252" (oder so) angegeben.. Auch mit diesem klappt es nicht..

ich werd mich mal an meine Apache-Configs setzen, vielleicht finde ich da irgendeine Einstellung dazu...

Mal schaun
 
Zurück