我有一個URI,其參數是這樣的,逃逸編碼在解析查詢參數的Android
ID = ahshshs + 24 當我解析由所述參數,
String id = uri.getQueryParameter("id");
我得到的答覆爲
ahshshs 24
將'+'替換爲空格。我知道這是因爲uri被編碼並被替換。有沒有辦法,以獲得價值,沒有編碼?
我有一個URI,其參數是這樣的,逃逸編碼在解析查詢參數的Android
ID = ahshshs + 24 當我解析由所述參數,
String id = uri.getQueryParameter("id");
我得到的答覆爲
ahshshs 24
將'+'替換爲空格。我知道這是因爲uri被編碼並被替換。有沒有辦法,以獲得價值,沒有編碼?
感謝您的答覆,我使用UrlQuerySanitizer做了它
String encodedParameter = URLEncoder.encode("+", "UTF-8");
在這種情況下,+
將進行編碼。 在這裏寫代碼。 首先,我擴展了UrlQuerySanitizer類作爲
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);
}
}
然後,解析的網址,
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");
我認爲你必須使用java.net.URLEncoder來編碼你的URL。
String encodedParameter = URLEncoder.encode(paramToEncode, codification);
例如:爲%2B
而形成的URI,而不是使用+,對其進行編碼,這樣你就可以在以後解碼和將其解釋爲+而不是空格。你可以使用'%2B'來編碼它。 – Arpit