@sylvester
В Java для экранирования спецсимволов в строке URL можно использовать метод URLEncoder.encode()
из класса java.net.URLEncoder
. Однако этот метод не считает символы ?
и /
спецсимволами, поэтому их нужно экранировать вручную.
Пример экранирования спецсимволов в URL-строке:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class Main { public static void main(String[] args) { String url = "https://www.example.com/search?type=PC&query=Java?"; try { String encodedUrl = URLEncoder.encode(url, "UTF-8") .replace("%2F", "/") .replace("%3F", "\?") .replace("+", "%20"); // нужно также заменить символ "+" на "%20" System.out.println(encodedUrl); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } |
В результате выполнения данного кода будет выведено:
1
|
https%3A%2F%2Fwww.example.com%2Fsearch%3Ftype%3DPC%26query%3DJava%3F |
Обратите внимание, что в данном примере символ ?
был заменен на ?
, поскольку в URL символ ?
является разделителем параметров и должен быть экранирован.