Java で URL に渡すクエリ パラメータをエンコードするにはどうすればよいでしょうか。これは明らかな、すでに尋ねられた質問のように思えます。
よくわからない微妙な点が 2 つあります。
- URL のスペースは「+」でエンコードするべきでしょうか、それとも「%20」でエンコードするべきでしょうか? Chrome で「http://google.com/foo=?bar me」と入力すると、Chrome はそれを %20 でエンコードするように変更します。
- コロン「:」を %3B としてエンコードすることは必要ですか?/正しいですか? Chrome ではそうではありません。
ノート:
java.net.URLEncoder.encode
動作していないようですが、フォームに送信されるデータをエンコードするためのもののようです。たとえば、スペース+
を の代わりにとしてエンコードし%20
、不要なコロンをエンコードします。java.net.URI
クエリパラメータをエンコードしない
ベストアンサー1
java.net.URLEncoder.encode(String s, String encoding)
も役立ちます。HTML フォームのエンコーディングに従いますapplication/x-www-form-urlencoded
。
URLEncoder.encode(query, "UTF-8");
一方で、パーセントエンコーディング(としても知られているURLエンコード) はスペースを でエンコードします%20
。コロンは予約文字なので、:
エンコード後もコロンのままになります。