私は、Javaでエスケープするのがjava.net.URLEncoder.encode
で行われているさまざまな投稿を見つけました。 私はdocs for URL
で発見したしかしその:URLをJavaでエスケープする方法(ドキュメントは明確ではありません)
URLEncoder
とURLDecoder
クラスはまた、唯一のRFC2396で定義された符号化方式と同じではありませんHTML形式のエンコードに使用することができます。
誰かがこの状況を私に説明できますか?
私は、Javaでエスケープするのがjava.net.URLEncoder.encode
で行われているさまざまな投稿を見つけました。 私はdocs for URL
で発見したしかしその:URLをJavaでエスケープする方法(ドキュメントは明確ではありません)
URLEncoder
とURLDecoder
クラスはまた、唯一のRFC2396で定義された符号化方式と同じではありませんHTML形式のエンコードに使用することができます。
誰かがこの状況を私に説明できますか?
文書では、URIクラスの使用を正しくお勧めします。 URLEncoderがまだ言及されている理由は、歴史的な理由からURLEncoderは1.0から1.4まで追加されていました。
URLEncoderは、その名前にもかかわらず、URL の引数またはPOSTパラメータをエンコードするためのものです。
URLを適切にエンコードする正しい方法は、クエリ文字列の前に新しいURI(null、String、null).toURL()を使用することです。
URIを使用できます。 URIから
URI uri = new URI("http://google.com/ a z.html?asd= z%#@@#");
あなたがでURLを取得することができます。たとえば:それはあなたのような何かを行う場合に例外をスローされますので、単一のパラメータのコンストラクタは、文字をエスケープしないこと
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%[email protected]@%23
ノートやっている:
URL uri.toURL();