1

URLEncoderクラスを使用して文字列(Say String a = "123 + gtyt")をエンコードしました。エンコードされた文字列はStringbです。次に、URLに追加されたパラメータとして「Stringb」を送信しています。http://example.com?request=bとしましょう。

example.comでURLDecoderを使用して文字列をデコードすると、文字列の記号+が欠落し、デコード後に「文字列a」が表示されません。

ここで、example.comの「Stringb」をデコードせずに印刷すると。Stringを正確に取得します



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

4

1 に答える 1

1

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

HTTPリクエストを処理すると、サーブレットAPIは自動的に「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
于 2012-04-14T13:39:36.587 に答える