web-dev-qa-db-ja.com

java.net.URLEncoder.encodeはスペースを+としてエンコードしますが、%20が必要です

タイトルにあるように、どのエンコーダーが%20ではなく+としてスペースを与えてくれますか? Android用に必要です。 Java.net.URLEncoder.encodeは+を提供します

12
Cote Mounyo

Androidには、使用できる独自のUriクラスがあります。

例えば。

_String url = Uri.parse("http://www.google.com").buildUpon()
    .appendQueryParameter("q", "foo bar")
    .appendQueryParameter("xml", "<Hellö>")
    .build().toString();
_

結果は

_http://www.google.com?q=foo%20bar&xml=%3CHell%C3%B6%3E_

Uri 指定された文字列の文字を '%'としてエンコードします-UTF-8スキームを使用してエスケープされたオクテット。文字( "A-Z"、 "a-z")、数字( "0-9")、および予約されていない文字( "_-!.〜 '()*")はそのまま残します。

注:URLEncoderでは、__-.*_のみが予約されていない文字と見なされます。 !~'()は_%21%7E%27%28%29_に変換されます。

25
zapl

+は自分で置き換える必要があります。

例:

System.out.println(Java.net.URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20"));

この投稿の詳細については、以下をご覧ください。

RLEncoderはスペース文字を変換できません

2
zennon