PHP HTTP POST senden

Seth93

Well-known member
ID: 322821
L
24 November 2008
1.400
82
Hallo,

ich möchte gerne POST-Daten an einen anderern Server senden.
Hab dazu eine fertige Funktion und alles klappt wunderbar, bis auf Sonderzeichen.
Weder ü noch ü funktionieren. Bei ü wird so n schwarzer Diamant angezeigt und &umml; wird normal angezeigt als Text.
Der Content-Type ist application/x-www-form-urlencoded. Kann ich irgendwo noch angeben, dass ich die Daten als UTF-8 senden möchte?

Lg
 
Den gibt man eigentlich direkt hinter dem Content-Type-Header an:
PHP:
header('Content-Type:application/x-www-form-urlencoded; charset=utf-8');
Du musst allerdings dann sicherstellen, dass alle Daten auch mit UTF-8 kodiert sind.
 
Danke, hab s so versucht, aber hat nicht geklappt.
Andere Fehlerquelle könnte http_build_query() sein. Ich bin grad am testen.

EDIT:
Wie müsste mein "ü" aussehen, damit es als UTF-8 erkannt wird, nachdem ich die Funktion http_build_query() verwendet habe?

Ich hab bisschen rumprobiert, bekomme:
%26uuml%3B
%FC

raus.

Und hab grad mal den Charset ISO-8859-1 probiert und ein normales ü gesendet.
Wird trotzdem falsch auf Facebook angezeigt.
Ich weiß, dass es eine SDK gibt, aber kann die grad nicht verwenden, hab also eine eigene Funktion zum Senden von POST-Daten.




Und nochmal edit:
f%C3%BCr ist korrekt. Hab das über urlencode() bekommen.
 
Zuletzt bearbeitet:
Ich habe das mal mit folgendem Code probiert:
PHP:
<?=http_build_query(array('ue' => 'ü'));
Und als Ergebnis bekomme ich:
Code:
ue=%C3%BC
Deine Ergebnisse sind zum Einen die url-enkodierte HTML-Entität für ü (&uuml;) und das zweite sieht nach dem ISO-8859-Wert fürs ü aus.
 
Also ich bekommme folgendes raus, wenn ich deinen Code nutze:
PHP:
ue=%FC

Liegt das an anderern Einstellungen in der ini?

Lg
 
Ich vermute, Du hast die Datei dann als ISO-8859-* abgespeichert und nicht als UTF-8.
 
Im ANSI-Format.
Hab es zu UTF-8 kodiert und erhalte nun
PHP:
ue=%C3%BC

Könntest du mir bitte noch erklären warum das so ist?

EDIT:
Ich gehe mal davon aus, dass das ü im UTF-8 anders abgespeichert wird?
Ich hab nämlich eine Datei mit der POST-Senden-Funktion und eine andere Datei, die den Text mit dem ü enthält. Der Fehler bleib noch bestehen. Denke ich muss nur die andere Datei umkodieren.
 
Guckst du Wikipedia, um das mit der Bitschubserei zu verstehen:
https://de.wikipedia.org/wiki/UTF-8#Kodierung (bissle runterscrollen zur Tabelle)

Bei deinem 'ü' würde das dann so aussehen:

Code:
[FONT=Courier New]Unicode dezimal: 252
Unicode:     U+   0    0    F    C
Unicode binär: 0000 0[COLOR=Blue]000 11[/COLOR][COLOR=SeaGreen]11 1100[/COLOR]
 UTF binär:     [COLOR=Magenta]110[/COLOR][COLOR=Blue]0 0011[/COLOR] [COLOR=Magenta]10[/COLOR][COLOR=SeaGreen]11 1100[/COLOR][/FONT][FONT=Courier New]
 UTF:               C    3    B    C[/FONT] [FONT=Courier New]
 UTF urlencoded:   %C    3   %B    C[/FONT]
Edit: doofes Forum, egal, was ich tu; das tut die Buchstaben nicht ordentlich untereinander schreiben. Rauskopieren in nen Editor, wenn mans ordentlich sehen will :-?
 
Dein BBCode-Debugging buggt. :ugly: ;)
Code:
[FONT=Courier New]Unicode dezimal: 252
Unicode:     U+   0    0    F    C
Unicode binär: 0000 0[COLOR=Blue]000 11[/COLOR][COLOR=SeaGreen]11 1100[/COLOR]
UTF binär:     [COLOR=Magenta]110[/COLOR][COLOR=Blue]0 0011[/COLOR] [COLOR=Magenta]10[/COLOR][COLOR=SeaGreen]11 1100[/COLOR][/FONT][FONT=Courier New]
UTF:              C    3    B    C[/FONT] [FONT=Courier New]
UTF urlencoded:  %C    3   %B    C[/FONT]