Urlencoding Daten für den post-request-body. Bin ich mit falschen charset?
Möchte ich replizieren, ein funktionierendes POST-Anforderung in Java. Für Testzwecke, lässt die Meldung: 'äöõüäöõüäöõüäöõü'
Arbeiten-POST-request (mit kodierte Botschaft " äöõüäöõüäöõüäöõü'):
Header
POST http://www.mysite.com/newreply.php?do=postreply&t=477352 HTTP/1.1
Host: www.warriorforum.com
Connection: keep-alive
Content-Length: 403
Origin: http://www.mysite.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko)Chrome/14.0.835.202 Safari/535.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: */*
Referer: http://www.mysite.com/test-forum/477352-test.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: bblastvisit=1319205053; bblastactivity=0; bbuserid=265374; bbpassword=1125e9ec1ab41f532ab8ec6f77ddaf94; bbsessionhash=91444317c100996990a04d6c5bbd8375;
Körper
securitytoken=1319806096-618e5f9012901e2d818bf2c74c2121baa064be57&ajax=1&ajax_lastpost=1319806096&**message=%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC**&wysiwyg=0&styleid=1&signature=1&fromquickreply=1&s=&do=postreply&t=477352&p=who%20cares&specifiedpost=0&parseurl=1&loggedinuser=265374
Wie wir sehen können, in den request-body 'äöõüäöõüäöõüäöõü ist kodiert als: %u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC%u00E4%u00F6%u00F5%u00FC
Nun möchte ich replizieren.
Können Url-codieren, den text mit Zeichensatz utf-8 in Java:
String userText = "äöõüäöõüäöõüäöõü";
String encoded = URLEncoder.encode(userText, "utf-8");
Ergebnis: %C3%A4%C3%B6%C3%B5%C3%BC%C3%A4%C3%B6%C3%B5%C3%BC%C3%A4%C3%B6%C3%B5%C3%BC%C3%A4%C3%B6%C3%B5%C3%BC%0A%0A%0A%5BSIZE%3D%221%22%5D%5BI% 5D << NICHT DIE GLEICHE
Probieren ISO-8859-1:
String userText = "äöõüäöõüäöõüäöõü";
String encoded = URLEncoder.encode(userText, "ISO-8859-1");
Ergebnis: %E4%F6%F5%FC%E4%F6%F5%FC%E4%F6%F5%FC%E4%F6%F5%FC%0A%0A%0A%5BSIZE%3D%221%22%5D%5BI%5D << NICHT DIE GLEICHE
Keiner von Ihnen produzieren die gleiche codierte Zeichenfolge, wie in dem Beispiel arbeiten, aber alle haben den gleichen Eingang. Was vermisse ich hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, was die oben genannten Daten codiert ist, aber es ist nicht
application/x-www-form-urlencoded; charset=UTF-8
wie der Antrag behauptet. Das ist nicht legal, die Daten für diesen MIME-Typ.Sieht es aus wie einige UTF-16BE-codiert, form.
URLEncoder.encode(userText, "utf-8");
wäre die richtige Art und Weise zu codieren, dieapplication/x-www-form-urlencoded; charset=UTF-8
Werten, wenn dies war tatsächlich das, was der server erwartet wurde. (ref)