Это не имеет ничего общего с кодировками символов, такими как UTF-8 или ASCII.У вас есть строка URL в кодировке .Этот вид кодирования отличается от кодировки символов.
Попробуйте что-то вроде этого:
try {
String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8.name());
} catch (UnsupportedEncodingException e) {
// not going to happen - value came from JDK's own StandardCharsets
}
В Java 10 добавлена прямая поддержка Charset
для API, то есть нет необходимостиcatch UnsupportedEncodingException:
String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8);
Обратите внимание, что кодировка символов (например, UTF-8 или ASCII) - это то, что определяет отображение символов в необработанные байты.Хорошее введение в кодирование символов см. В этой статье .