В моем приложении о мифических подземельях World of Warcraft мне нужно было выполнить несколько запросов в публичном API raiderio.У меня большая проблема, когда игроки называют это примерно так:
https://raider.io/api/v1/characters/profile?region=US&realm=https://raider.io/characters/us/zuljin/Børomìr&name=&fields=mythic_plus_best_runs%3Aall this name : Børomìr
В API этот запрос не работает, потому что он обрабатывает специальные символы, такие как:
https://raider.io/api/v1/characters/profile?region=us&realm=zuljin&name=B%C3%B8rom%C3%ACr&fields=mythic_plus_best_runs%3Aall becomes this : B%C3%B8rom%C3%ACr
где:
ø становится %C3%B8
ø
%C3%B8
ì становится %C3%AC
ì
%C3%AC
Какой инструмент мне нужен для генерации этого преобразования в Java?
Вот код запроса URL:
String body = ""; URL url = new URL("https://raider.io/api/v1/characters/profile?region="+region.toString()+"&realm="+realm+"&name="+name+"&fields=mythic_plus_best_runs%3Aall"); System.out.println(url.toString()); URLConnection uc = url.openConnection(); uc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); InputStream in = uc.getInputStream(); String encoding = uc.getContentEncoding(); encoding = encoding == null ? "UTF-8" // "windows-1251" // "Cp1251" : encoding; body = IOUtils.toString(in, encoding);
Это то, что называется процентная кодировка и используется в URL.Есть много инструментов, которые позволяют вам декодировать его как этот .В частности, в Java, он имеет URL-кодировщик
Вы бы использовали Java URLEncoder Как и в URLEncoder.encode("Børomìr", "UTF-8");
URLEncoder.encode("Børomìr", "UTF-8");