Hallo,
Man muß die gesendete Zeichenkette mit escape() umwandeln...
Bitte nicht - damit handelst du dir arge Probleme ein.
Zunächst einmal: Ja, bei POST-Anfragen mit XMLHttpRequest wird standardmäßig UTF-8 als Kodierung für die POST-Daten verwendet. Ich wüsste auch nicht, wie man das ändern kann. Korrekt wäre ein Header Content-Type: application/x-www-form-urlencoded; charset=..., aber das beeindruckt die Browser nicht, sie benutzen trotzdem UTF-8.
Warum du auf keinen Fall escape() verwenden solltest: Wenn jemand Zeichen außerhalb von ISO-8859-1 eingibt (z.B. typographische Anführungszeichen, die auch gerne durch Programme automatisch eingefügt werden), dann werden diese durch escape() mit %uXXXX maskiert. XXXX ist dabei die hexadezimale Unicodenummer des Zeichens.
escape("Er sagte: „Hallo!“");
bringt z.B.
Er%20sagte%3A%20%u201EHallo%21%u201C
Jagst du dann dein urldecode drüber, bekommst du
Er sagte: %u201EHallo!%u201C
Damit hast du Zeichensalat.
Wie kriege ich die Umlaute sicher über AJAX gesendet ?
Wie gesagt, am besten stellst du auf UTF-8 um. Dann kannst du, wenn du unbedingt willst, serverseitig immer noch eine Umkodierung zu ISO-8859-1 vornehmen. Bei der gehen natürlich u.U. Zeichen verloren - aber koordiniert, ohne dass wie bei escape() Unsinn dabei herauskommt.
Mathias