2012-09-19 1 views
14

Ich möchte POST (senden) einige Formulardaten an einen Webserver mit cURL auf einer Terminal-Eingabeaufforderung.Wie poste ich Daten mit UTF-8-Codierung mit Hilfe von curl?

Das ist, was ich bisher habe:

curl --data-ascii "content=derinhält&date=asdf" http://myserverurl.com/api/v1/somemethod 

Das Problem ist, dass die Umlaute ("äöü") ersetzt werden "?" wenn ich die Postanforderung auf dem Server erhalte.

Ich denke, ich muss eine UTF-8-Codierung für die POST Anfrage verwenden.

Weiß jemand, wie ich das erreichen kann?

+0

Mögliche dup von: http://stackoverflow.com/questions/10172327/linux-curl-save-as-utf-8 – alfasin

+0

I don‘ Ich denke schon. Ihr Kommentar bezieht sich auf GET-Anfragen und UTF-8-Decodierung. Meine Frage betrifft POST-Anfragen und UTF-8-Kodierung. – ashiaka

+0

Zeigen Sie uns den 'bin2hex ($ content)' Wert dessen, was Sie auf dem Server erhalten. – deceze

Antwort

21

Sie können UTF-8 in der POST-Anfrage verwenden, Sie müssen nur den Zeichensatz in Ihrer Anfrage angeben.

So nehme ich diese Anfrage verwendet werden soll:

curl -X POST -H "Content-Type: text/html; charset=UTF-8" --data-ascii "content=derinhält&date=asdf" http://myserverurl.com/api/v1/somemethod 
+5

Der Inhaltstyp in der obigen Antwort angegeben ist einfach falsch. Der richtige ist "-H" Inhaltstyp: application/x-www-form-urlencoded; charset = utf-8 "'. –

+0

@KonradWindszus danke für die *** richtige Antwort ***! – candlejack

+0

Total gerettet mich! – Dmitri