7

Java でのエスケープが で行われるさまざまな投稿を見つけましたjava.net.URLEncoder.encode。ただし、そのためのドキュメントでURL見つけました:

およびクラスも使用できますがURLEncoderURLDecoderRFC2396 で定義されているエンコード方式とは異なる HTML フォームのエンコードにのみ使用できます。

誰かが私にこの状況を説明できますか?

4

3 に答える 3

7

URI を使用できます。例えば:

URI uri = new URI("http","google.com","/ a z.html","asd= z%#@@#");
System.out.println(uri.toString());
//returns http://google.com/%20a%20z.html#asd=%20z%25%23@@%23

単一パラメーターのコンストラクターは文字をエスケープしないため、次のようなことをすると例外がスローされることに注意してください。

URI uri = new URI("http://google.com/ a z.html?asd= z%#@@#");

URI から次のようにして URL を取得できます。

URL uri.toURL();
于 2012-10-28T07:14:00.517 に答える
4

ドキュメントは、URI クラスを使用するように正しくアドバイスしています。URLEncoder がまだ言及されている理由は、URLEncoder が 1.0 から存在し、URI が 1.4 で追加された歴史的な原因だと思います。

于 2012-10-28T06:55:41.307 に答える
4

URLEncoder は、その名前にもかかわらず、URL引数または POST パラメーターをエンコードするためのものです。

クエリ文字列の前に URL を適切にエンコードする正しい方法は、new URI(null, String, null).toURL() を使用することです。

于 2012-10-28T07:03:21.913 に答える