Lieber Sven,
Mit utf8_decode() würd's aber wieder gehen.
Das war das, was mir wohl fehlte! ich hatte es nur kurz mit urldecode in einer Kombination proboert - ohne Erfolg...
Ich habe nun drei Sachen geändert. Die JS Anfrage kodiere ich, wie Du es vorgeschlagen hast, mit encodeURIComponent. Im PHP-Script kodiere ich "zurück": utf8_decode( ... )
und die Ausgabe des PHP-Scripts kodiere ich wiederum mit utf8-encode() und "übergebe" sie dem JS (responseText). Muss ich dann eigentlich wieder decodieren? ;-)
Escape klappt deshalb, weil es auf ISO-8859-1-Basis codiert, d.h. ein deutscher Umlaut erhält dort die %XY-Hexdarstellung aus dem ISO-Zeichensatz - was PHP wiederum zurückführt auf den wirklichen Umlaut.
Ist das nicht gerade der Vorteil schlecht hin? Stell ich an das PHP-Script nun direkt eine Anfrage (?orte=<ortsname>), funktioniert diese zwar mit Opera aber im FF nicht. Opera macht bspw aus köln k%C3%B6ln (das ist nach Deiner Beschreibung ja utf-8); Firefox lediglich k%F6ln (das ist dann wohl ISO-8859-1-Basis). Dies wird sicher an meinen jeweiligen Browsereinstellungen liegen, führt aber in einem Fall zu einem Ergebnis im anderen nicht und das ist ja eher unerwünscht. Kann ich die Codierung der Parameter erkennen und entsprechend handeln? Oder habe ich irgendwo was mißverstanden?
Mit freundlichem Gruß
Micha