Как экранировать спецсимволы, например " \?", в строке url из java?

Пользователь

от sylvester , в категории: Java , 2 месяца назад

Как экранировать спецсимволы, например " \?", в строке url из java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jazmyne , 2 месяца назад

@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 символ ? является разделителем параметров и должен быть экранирован.