2012-04-14 12 views
1

Ich habe meine Zeichenfolge (Say String a = "123 + gtyt") mit URLEncoder Klasse codiert. Die codierte Zeichenfolge ist String b. Dann sende ich "String b" als Parameter an eine URL angehängt. Sagen wir zu http://example.com?request=b.
Wer dekodiert für URLencoding?

Wenn ich den String bei example.com mit URLDecoder Decode, Das Symbol + in meinem String fehlt und ich bin nicht „String a“ nach der Decodierung

Jetzt bekommen Wenn ich ohne Decodierung der Druck "String b" bei example.com. Ich bekomme String genau.



Also mein Zweifel ist, ob die Decodierung vom Browser selbst beim Umleiten erfolgt?

+1

Könnten Sie den genauen Code zeigen Sie verwenden? – Torious

+0

Für die Codierung
Zeichenfolge xmlString1 = URLEncoder.encode (xmlString, "utf-8"); Zeichenfolge reqString = "http://example.com/saml/IDProvider"+"?SAMLRequest=" + xmlString1; – suraj

+0

@Torious Zum Dekodieren bei example.com, String response = request.getParameter ("response");
String xmlString2 = URLDecoder.decode (Antwort, "utf-8") – suraj

Antwort

1

Wenn Sie "123 + gtyt" codieren, codiert es das Pluszeichen.

Wenn Sie eine HTTP-Anfrage bearbeiten, decodiert die Servlet-API sie automatisch zu "123 + gtyt". Wenn Sie es erneut dekodieren - es ändert das "+" in ein Leerzeichen.

Also der Schlüssel ist - Parameter nicht explizit dekodieren.

Zum Beispiel:

final String encoded = URLEncoder.encode("123+gtyt"); 
    final String decoded = URLDecoder.decode(encoded); 
    System.out.println("decoded = " + decoded); // 123+gtyt 
    System.out.println("URLDecoder.decode(decoded) = " 
       + URLDecoder.decode(decoded)); // prints 123 gtyt 
+0

Gibt es eine Möglichkeit zu stoppen Servlet API automatisch die codierte Zeichenfolge – suraj

+0

decodieren Die kurze Antwort ist nein. Entschlüsseln Sie nicht, was von der API kommt. –

+0

oki :) Vielen Dank :) – suraj

Verwandte Themen