Der Martin: Umlaute und Sonderzeichen ändern

Beitrag lesen

Hallo,

echo urlencode($_POST["Site"]); gibt aus: M%E4rchen.
Okay, das ist eine 1-Byte-Codierung, vermutlich ISO-8859-1. Dann ist wohl das Script selbst (vermutlich!) in UTF-8 codiert.
Das kann man daraus nicht erkennen.

nein, aber daraus, dass das ISO-codierte 'ä' NICHT als identisch mit dem im Script notierten 'ä' erkannt wird, kann man zumindest schließen, dass das Script selbst NICHT in ISO-8859-1 vorliegt. UTF-8 habe ich deshalb angenommen, weil es unter diesen Voraussetzungen am wahrscheinlichsten ist.

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Hier behauptest du, das Dokument sei in ISO-8859-1 codiert - das ist aber anscheinend nicht wahr.
Warum nicht?

Siehe oben. Wenn es so wäre, gälte im Script auch ('ä' von außen) == ('ä' im Script).

Du hast ein generelles Problem, weil die Codierung von URL-Parametern nicht wirklich festgelegt ist.
URL-Parameter haben wir hier nicht, sonder ein per POST gesendetes Formular.

Ja, stimmt. POST-Parameter werden aber genauso behandelt und unterliegen den gleichen Regeln. Sie werden nur anders übermittelt, und dadurch entfällt eine eventuelle Längenbeschränkung.

Und die unterschiedlichen Kodierungen kommen nur dann zustande, wenn man URLs händisch eingibt.

Ansonsten verwendet der Browser wohl die Codierung des Dokuments.

Wenn der Browser aus Formulardaten einen Querystring zusammenbaut, orientiert er sich an der Kodierung der Seite. Aber, wie gesagt, das interessiert bei diesem Problem nicht.

Doch, sicher - das ist anscheinend genau das Kernthema dieses Threads.

Ciao,
 Martin

--
Husten kann böse Folgen haben.
Besonders im Kleiderschrank.