2012-10-28 10 views
7

私は、Javaでエスケープするのがjava.net.URLEncoder.encodeで行われているさまざまな投稿を見つけました。 私はdocs for URLで発見したしかしその:URLをJavaでエスケープする方法(ドキュメントは明確ではありません)

URLEncoderURLDecoderクラスはまた、唯一のRFC2396で定義された符号化方式と同じではありませんHTML形式のエンコードに使用することができます。

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

答えて

4

文書では、URIクラスの使用を正しくお勧めします。 URLEncoderがまだ言及されている理由は、歴史的な理由からURLEncoderは1.0から1.4まで追加されていました。

4

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

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

7

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(); 
関連する問題