существует ли класс для кодирования общего String в соответствии со спецификацией RFC 3986?
То есть: "hello world" => "hello%20world" Не (RFC 1738): "hello+world"
Спасибо
существует ли класс для кодирования общего String в соответствии со спецификацией RFC 3986?
То есть: "hello world" => "hello%20world" Не (RFC 1738): "hello+world"
Спасибо
Если это URL, используйте URI
URI uri = new URI("http", "//hello world", null);
String urlString = uri.toASCIIString();
System.out.println(urlString);
Решено с этим:
Метод encodeUri
Источник: функции кодирования, совместимые с Twitter RFC3986.
Этот метод берет строку и преобразует ее в закодированную строку RFC3986.
/** The encoding used to represent characters as bytes. */
public static final String ENCODING = "UTF-8";
public static String percentEncode(String s) {
if (s == null) {
return "";
}
try {
return URLEncoder.encode(s, ENCODING)
// OAuth encodes some characters differently:
.replace("+", "%20").replace("*", "%2A")
.replace("%7E", "~");
// This could be done faster with more hand-crafted code.
} catch (UnsupportedEncodingException wow) {
throw new RuntimeException(wow.getMessage(), wow);
}
}
a3=2+q, так как это будет кодировать строку в a3=2%2Bq вместо a3=2%20q, поскольку URLEncoder кодирует строку до того, как замена может иметь место
- person Roman Vottner; 16.07.2019
Не знаю, есть ли он. Существует класс, который обеспечивает кодировку, но он меняет " " на "+". Но вы можете использовать метод replaceAll в классе String, чтобы преобразовать «+» в то, что вы хотите.
ул.repaceAll("+","%20")
В случае веб-приложений Spring я смог использовать это:
UriComponentsBuilder.newInstance()
.queryParam("KEY1", "Wally's crazy empôrium=")
.queryParam("KEY2", "Horibble % sign in value")
.build().encode("UTF-8") // or .encode() defaults to UTF-8
возвращает строку
?KEY1=Wally's%20crazy%20emp%C3%B4rium%3D&KEY2=Horibble%20%25%20sign%20in%20value
Перекрестная проверка на одном из моих любимых сайтов показывает тот же результат: «Процентное кодирование для URI». Выглядит хорошо для меня. http://rishida.net/tools/conversion/