У меня есть URL, который я люблю анализировать в приложении java. Эти URL могут содержать символы, которые нельзя вызвать:
url.openStream()
пример:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=langlinks&titles=2019–20_coronavirus_pandemic&redirects=&lllimit=400
есть символ - в нем (2019–20_coronavirus_pandemi c), который я должен кодировать. Соответственно Я хотел бы закодировать полный URL-адрес, поскольку он может содержать другие специальные символы.
Я делаю это следующим образом, что не работает для меня:
String urlEncoded = URLEncoder.encode(wikiID, StandardCharsets.UTF_8.toString());
String sURL = "https://en.wikipedia.org" + "/w/api.php?format=json&action=query&prop=langlinks&titles=" + urlEncoded + "&redirects=&lllimit=400";
URL url = new URL(sURL);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
URLEncoder.encode кодирует с 2019–20 по 2019% 3F20, что неверно, соотв. не может быть вызван. правильное кодирование будет: 2019% E2% 80% 9320
Как правильно кодировать URL по коду?