Java でのエスケープが で行われるさまざまな投稿を見つけましたjava.net.URLEncoder.encode
。ただし、そのためのドキュメントでURL
見つけました:
およびクラスも使用できますが
URLEncoder
、URLDecoder
RFC2396 で定義されているエンコード方式とは異なる HTML フォームのエンコードにのみ使用できます。
誰かが私にこの状況を説明できますか?
Java でのエスケープが で行われるさまざまな投稿を見つけましたjava.net.URLEncoder.encode
。ただし、そのためのドキュメントでURL
見つけました:
およびクラスも使用できますが
URLEncoder
、URLDecoder
RFC2396 で定義されているエンコード方式とは異なる HTML フォームのエンコードにのみ使用できます。
誰かが私にこの状況を説明できますか?
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();
ドキュメントは、URI クラスを使用するように正しくアドバイスしています。URLEncoder がまだ言及されている理由は、URLEncoder が 1.0 から存在し、URI が 1.4 で追加された歴史的な原因だと思います。
URLEncoder は、その名前にもかかわらず、URL引数または POST パラメーターをエンコードするためのものです。
クエリ文字列の前に URL を適切にエンコードする正しい方法は、new URI(null, String, null).toURL() を使用することです。