simon-ni
Goto Top

PHP zeigt Umlaute aus Datenbank falsch an

Hallo,

wie bereits der Titel vermuten läst, zeigt mir meine PHP Umlaute aus meiner MySQL Datenbank falsch an.

Wenn ich die Daten direkt ausgebe, werden Sie richtig angezeigt, wenn ich das ganze allerdings über Ajax nachlade kommt es zu einem Fehler.

Diese Datei wird von dem Ajax Script aufgerufen.

 
$db = mysqli_connect($hostname, $username, $password, $dbname);

if (mysqli_connect_errno()) {
	printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());  
	exit();
}
mysql_query("SET NAMES 'utf8'");  


if ($_POST["suchbegriff"]){  
		
	$result = mysqli_query($db, "SELECT ID, vorname, nachname   
	FROM azubi WHERE vorname LIKE ('%".mysql_real_escape_string($_POST["suchbegriff"])."%')   
	OR nachname LIKE ('%".mysql_real_escape_string(($_POST["suchbegriff"]))."%')");  
		
	while($row = mysqli_fetch_array($result)){
	echo $row['vorname']." ".$row['nachname']." ";  
		echo '<a href="edit_azubi/edit_azubi.php?id='.$row['ID'].'"   
		onclick="FensterOeffnen(this.href); return false">Bearbeiten</a>';  
		echo "<br/>";		  
		}
               }


Hier noch das Ajax, welches ich nicht selber geschrieben hab.

 
function searchAzubi(suchbegriff){
	var xmlHttp = null;
	// Unterstützung für Internet Explorer 7
	if (typeof XMLHttpRequest != 'undefined') {  
	     xmlHttp = new XMLHttpRequest();
	}
	// Wenn das Objekt erfolgreich erzeugt werden konnte			
	if (xmlHttp) {
		var url = "edit_azubi/suchfunktion.php"; //Die Suchfunktion deklarieren  
		var params = "suchbegriff="+suchbegriff; //Den Suchbegriff abspeichern  
					
		xmlHttp.open("POST", url, true); //Daten über POST an die Suchfunktion übergeben  
					
		//Headerinformationen für den POST Request
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  
		xmlHttp.setRequestHeader("Content-length", params.length);  
		xmlHttp.setRequestHeader("Connection", "close");					  
					
		xmlHttp.onreadystatechange = function () {
			if (xmlHttp.readyState == 4) {
			// Zurückgelieferte Ergebnise werden in das DIV "ergebnis" geschrieben 
			document.getElementById("ergebnis").innerHTML = xmlHttp.responseText;  
			}
		};				
		xmlHttp.send(params);
	}			
}


Ich versteh zwar was in dem Ajax Script steht, allerdings hab ich sonst nicht viel Ahnung davon. Ich brauche es nur für IE8+ falls es am Ajax liegt. Die Tabelle sowie die einzelnen Felder sind auf utf8_general_ci eingestellt.

Wie gesagt, es wird alles richtig angezeigt, sollange ich es nicht über das Ajax aufrufe.

Noch nen paar Infos.

Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
phpmyadmin Versionsinformationen: 3.5.2.2


Ich hoffe ihr könnt mir helfen face-smile

Grüße

Nico

Content-ID: 208267

Url: https://administrator.de/contentid/208267

Ausgedruckt am: 16.11.2024 um 05:11 Uhr

Dirmhirn
Dirmhirn 19.06.2013 um 10:12:49 Uhr
Goto Top
Hi!

Du musst alles auf UTF8 kodieren.
d.h. auch deine php Skirpts als "UTF8 ohne BOM" abspeichern, dann erkennt der Browser das richtig und schreibt und liest die Daten richtig.

sg Dirm
simon-ni
simon-ni 19.06.2013 um 11:08:49 Uhr
Goto Top
Zitat von @Dirmhirn:
Hi!

Du musst alles auf UTF8 kodieren.
d.h. auch deine php Skirpts als "UTF8 ohne BOM" abspeichern, dann erkennt der Browser das richtig und schreibt und liest
die Daten richtig.

sg Dirm

Hi,

danke für die Antwort, hab in meinem Notepad++ Kodierung - Konvertiere zu UTF8 ohne BOM ausgewählt und alles gespeichert (Meine index mit dem Ajax und die Suchfunktion Php) leider funktioniert das nicht?.

Grüße
Dirmhirn
Dirmhirn 19.06.2013 um 11:14:36 Uhr
Goto Top
Hi!

Wie kamen die Daten in die DB?

utf8encode bzw utf8decode kannst auch noch anschauen.

Wenn ich die Daten direkt ausgebe, werden Sie richtig angezeigt
Probier das einmal mit einem UTF8 kodierten php-skript. passts dann auch noch?

sg Dirm
simon-ni
simon-ni 19.06.2013 um 11:25:17 Uhr
Goto Top
Mhm.. geht leider auch nicht. Über ein von mir programmiertes Formular, textfelder werden direkt in in die DB geschrieben. Zum test hab ich grad noch einen Datensatz von Hand angelegt.

Ich denke es liegt eher an dem Ajax?
Dirmhirn
Dirmhirn 19.06.2013 um 11:41:09 Uhr
Goto Top
Mhm.. geht leider auch nicht.
bezieht sich das auf:
> Wenn ich die Daten direkt ausgebe, werden Sie richtig angezeigt
Probier das einmal mit einem UTF8 kodierten php-skript. passt's dann auch noch?

dann sind die Daten in die DB wohl falsch eingetragen wurden. Für eine richtige Darstellung, müssen die eingabe und Ausgabe Skripte UTF8 ohne BOM kodiert sein. sowie die DB und die Verbindung.
du kannst aber auch die Daten vor dem Eintragen mit utf8encode konvertieren.
simon-ni
simon-ni 19.06.2013 um 12:51:18 Uhr
Goto Top
Wenn ich es in UTF Codiere. Ich versuch gleich mal die Daten über utf8encode einzutragen.