2017-07-27 9 views
0

アンドロイドクエリパラメータを解析している間、私は、そのパラメータで、このようなものですURI、エスケープエンコーディング

ID = ahshshs + 24 私は

String id = uri.getQueryParameter("id"); 

、によってパラメータを解析しています持っています私は24

ahshshs

としての応答を取得しています0

「+」はスペースで置き換えられます。私はこれがuriがコード化され、置き換えられるためです。エンコードせずに値を取得する方法はありますか?

+0

、としてURLを解析され、それを最初にエンコードし、スペースの代わりに+と解釈します。 '%2B'を使ってエンコードすることができます。 – Arpit

答えて

0

おかげで、私はUrlQuerySanitizerを使用して行っていたとして、この場合

String encodedParameter = URLEncoder.encode("+", "UTF-8"); 

+はエンコードされます。 ここにコードを書いてください。あなたが後でそれをデコードすることができるように 、私は、その後

public class CustomUrlQuerySanitizer extends UrlQuerySanitizer { 
    @Override 
    protected void parseEntry(String parameter, String value) { 
//  String unescapedParameter = unescape(parameter); 
     ValueSanitizer valueSanitizer = 
       getEffectiveValueSanitizer(parameter); 

     if (valueSanitizer == null) { 
      return; 
     } 
//  String unescapedValue = unescape(value); 
     String sanitizedValue = valueSanitizer.sanitize(value); 
     addSanitizedEntry(parameter, sanitizedValue); 
    } 
} 

としてUrlQuerySanitizerクラスを拡張URIを形成しながら、代わりに+を使用しての、

String id = null; 
if (uri != null) { 
    UrlQuerySanitizer urlQuerySanitizer = new CustomUrlQuerySanitizer(); 

    urlQuerySanitizer.registerParameter("id", 
      new UrlQuerySanitizer.IllegalCharacterValueSanitizer(
        UrlQuerySanitizer.IllegalCharacterValueSanitizer.ALL_OK 
      )); 
    urlQuerySanitizer.parseUrl(uri.toString()); 
    id = urlQuerySanitizer.getValue("id"); 
2

使用%の代わり2B +記号

URLを作成しつつパラメータは%2Bを使用してエンコードDahshshs%のような2B24

詳細Characters and symbols

0

であるべきです。

スペース文字が

`+」で多くの類似したトピックの詳細(URLエンコード)

を持って、関連する質問 hereを、置き換えられます。

は述べてlinkを参照してください。

0

私はjava.net.URLEncoderを使用してURLをエンコードしなければならないと思います。例えば

String encodedParameter = URLEncoder.encode(paramToEncode, codification); 

:応答のため%2B