我有一个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