2012-04-14 11 views
1

URLEncoderクラスを使用して私の文字列(Say String a = "123 + gtyt")をエンコードしました。エンコードされた文字列はString bです。次に、URLに追加されたパラメータとして "String b"を送信します。 http://example.com?request=bと言うことができます。 URLDecoderの、私の文字列内のシンボル+を使用してexample.comで
URLコードのデコードは誰が行いますか?

私は文字列をデコード

が不足していると私は今

をデコードした後、私はデコードせずに印刷する場合は、「文字列」を取得しておりませんexample.comの "String b" 文字列は正確にです。



私の疑問は、リダイレクト中にブラウザ自体でデコードが行われるかどうかです。

+1

はあなたが使用している正確なコードを示してもらえますか? – Torious

+0

エンコーディングの場合
String xmlString1 = URLEncoder.encode(xmlString、 "utf-8"); 文字列reqString = "http://example.com/saml/IDProvider"+"?SAMLRequest=" + xmlString1; – suraj

+0

@Torious example.comでのデコレーションでは、String response = request.getParameter( "response");
文字列xmlString2 = URLDecoder.decode(レスポンス "utf-8") – suraj

答えて

1

「123 + gtyt」をエンコードすると、プラス記号がエンコードされます。

サーブレットAPIは、HTTPリクエストを処理すると自動的に "123 + gtyt"にデコードします。もう一度デコードすると、 "+"がスペースに変わります。

したがって、キーは - パラメータを明示的にデコードしないでください。例えば

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

サーブレットAPIが自動的にエンコードされた文字列をデコードするのを止める方法はありますか? – suraj

+0

短い答えはいいえです。 APIから来るものをデコードしないでください。 –

+0

沖::)ありがとうございました。 – suraj

関連する問題