PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umlaute Problem bei POST/GET von HTML-Formular



mamue
11-06-2005, 16:38
Hallo,
ich bekomme per GET Daten von einer HTML-Seite (also nicht php) an mein PHP-script und suche anhand dieser Daten Einträge in einer Datenbank.
Solange keine Umlaute im Formular eingegeben werden, geht das auch. Wenn ein Textbasierter Browser verwendet wird, wie zum Beispiel w3m, geht das auch ganz prima. Nehme ich Firefox oder den IE, geht das nicht mehr.
In der URL steht zum Beipiel:


http://irgendwer.dyndns.info/umfrage.php?vorname=Steve&nachname=M%FCller

Mit dem w3m sieht das im Terminalfenster auf der Ergebnisseite so aus:


nachname='MA~1/4ller'

Wie behandle ich die Umlaute richtig? Ist das ein Problem, das ich mit HTML oder eines, das ich mit PHP habe?

Danke,
mamue

wollow
11-06-2005, 17:02
Wenn du Umlaute per GET weitergeben willst musst du sie vor der Übergabe umwandeln...

Schau mal: http://www.php3.de/urlencode

~edit~

Achja und um weiteren Fragen vorzubeugen :)
Nach der Übergabe natürlich wieder "zurück" umwandeln:

http://de3.php.net/manual/de/function.urldecode.php

mamue
11-06-2005, 17:06
Mhm, ja. Aber das ist kein PHP-script, das die Daten weitergibt, sondern eine normale HTML-page. Ich nehme an, das geht so nicht und ich muß den Autor bitten, die Daten vorherh zu encodieren?

Danke,
mamue

jeebee
11-06-2005, 21:23
http://irgendwer.dyndns.info/umfrage.php?vorname=Steve&nachname=M%FCller das %FC ist die encodierte Form (urlencode("ü")="%FC"), also musst du im PHP-Skript ein urldecode auf deine Daten anwenden: urldecode($_GET['nachname'])=Müller

mamue
12-06-2005, 09:09
Das klingt völlig einleuchtend, funktioniert aber nicht.
Ich habe


$nachname = trim( $_GET[ "nachname" ] );
$nachname = urldecode( $nachname );
//oder auch alternativ:
$nachname = urldecode( $_GET[ "nachname" ] );

versucht. Beides führt nicht zum Erfolg. Ich denke, ich muß sehen, dass ich die Daten "urlencoded" bekomme, sonst werde ich wohl nicht erkennen können, was
ich da falsch gemacht habe.

Danke,
mamue

fuffy
17-06-2005, 09:38
Hi!

Die Werte im $_GET-Array sind bereits dekodiert. Darauf solltest du kein urldecode anwenden.

Könnte es in deinem Fall nicht einfach ein Zeichensatzproblem sein?
Verwende am besten die Funktion htmlentities(), um die Umlaute in HTML-Entitäten zu konvertieren.

Gruß
fuffy