Skyman: AJAX - Datenübergabe und deren Codierung

Beitrag lesen

echo $begrüßung;

Die Webseite selber:
<meta name="Content-Type" content="text/html; charset=iso-8859-1">

Danke erstmal für deine ausführlichen Antworten.
Allerdings wächst mir das ja schon fast wieder aus den Ohren raus, solche Probleme mit den Codierungen hatte ich ja noch nie.

Ich denke der META Tag in der Ausgangsseite ist also zu vernachlässigen, ok?

Jetzt mal was neues probiert, der Request Content der AJAX Routine:
http_request.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded; charset:iso-8859-1' );

Ich bin mir nicht sicher, ob das so erlaubt ist.

Ich bin mir auch nicht sicher, aber habe es schon in einigen Demo-Scripten gesehen, was ja nun auch nichts heißen muß, aber man klammert sich ja an jeden Strohhalm.
Aber deine Erklärung dazu ist natürlich einleuchtend, aber es hätte ja sein können...

Ich bin mal hingegangen und habe der eigentlich per POST übergebenen Suchvariablen in dem PHP Script einfach mal einen festen Wert zugewiesen um zu sehen was das Script macht.
ich habe festgelegt: $s_name = "bäumer";

In welcher Kodierung liegt dein Script vor und damit besagter Wert?

Nun, das Script, elches die Datenbankabfrage startet ruft erstmal gar keinen Code Befehl auf. Die mittles POST reinkommenden Variablen werden genutzt um die mysql_query Abfrage zu starten und die erhaltenen Daten mit ein bißchen HTML drumherum per echo zurückzusenden, damit sie dann mittels innerHTML in ein div Objekt eingefügt werden, mehr nicht.

Dann habe ich mir mal den gebastelten SQL String per echo zurückgeben lassen und auf einmal macht er aus dem Variableninhalt folgendes: "b?er"
Was ist da jetzt passiert? Da spielt doch irgendeine Codierung mit, oder? Aber welche und wie?

Welche Kodierung, nimmt der Browser, an hätten deine Daten?
(Firefox: Rechtsklick->Seiteninformationen anzeigen; oder im Menü Ansicht unter Zeichenkodierung nachsehen, welche markiert ist. Wähle einen anderen Wert aus. Wenn die Umlaute dann richtig dargestellt werden, liegen die Daten in dieser Kodierung vor (oder diese Kodierung passt zufälligerweise auch auf die Testdaten).

Also mein IE Browser hier steht auf UNI-Code UTF-8 und links-nach-rechts Ausgabe, also standard denke ich mir.

Wie ich merke, das der SQL Aufruf keine Ergebnisse liefert? Nun, wenn der Aufruf mysql_query($sql_string) FALSE zurück liefert, war das wohl nix...

Gut. Den Rückgabewert der mysql_*-Funktionen auszuwerten ist immer eine gute Idee. Aber was sagt mysql_error() dazu?

Und weiter geht's mit einer wichtigen Komponente. Unter welcher Version läuft dein MySQL-Server? 4.0 und kleiner oder 4.1 und größer? Bis Version 4.0 konnte MySQL noch nicht mit UTF-8 umgehen. In Version 4.1 wurde dem Thema Zeichenkodierung besondere Aufmerksamkeit geschenkt. Man kann nun an sehr vielen Stellen angeben, welche Kodierung für diese Stellen verwendet werden soll.

Au mein Gott, wem sagst du das, ich dachte, ich platze...
MySQL läuft auf unserem Server 4.1.13 und der codiert wirklich jeden Furtz...
Wir haben eigentlich alles auf standard gelassen bzw. Latin-1 glaub ich als Standard vorgegeben, dann hatte er beim Import aus dem alten Server damals auch alle Umlaute richtig mitgenommen.
Die Kollationen sind in allen Tabellen gleich und alle Abfragen funktionieren ja auch mit den Umlauten, nur AJAX stellt sich jetzt quer.

So allmählich bin ich geneigt unsaubere Maßnahmen zu ergreifen und alle Umlaute vor dem absenden einfach in "ae" und ähnlichem umzuwandeln und in der PHP Routine wieder zurück, bevor ich mir hier einen heißen suche.
Dazu müßte ich aber den passenden Jvascript regular-expression hinbekommen, wo das nächste Problem wäre...

...ich heule echt ab, PHP ist so schön, warum ist Javascript dann so kompliziert? Ok, nur für mich... :-(

Gruß
Skyman