¿Cómo codificar una URL para que sea "navegable"?

Quiero saber si hay alguna forma de analizar una URL como esta:

https://www.mysite.com/lot/of/unpleasant/folders/and/my/url with spaces &"others".xls

dentro

https://www.mysite.com/lot/of/unpleasant/folders/and/my/url%20with%20spaces%20&%22others%22.xls

Similar a la reescritura de URL que Firefox hace al pegar la url anterior, enviarla al servidor (sin respuesta a menos que tenga un sitio como este) y luego copiar la URL de la barra de navegación y pegarla en otro lugar.

UtilizandoURLEncoder#encode me da esta salida (no deseada):

https%3A%2F%2Fwww.mysite.com%2Flot%2Fof%2Funpleasant%2Ffolders%2Fand%2Fmy%2Furl+with+spaces+%26%22others%22.xls

Lamentablemente, recibo una cadena como se muestra al comienzo de la pregunta, así que usandoURLEncoder#encode directamente no funciona

Intenté ingenuamente esto:

String evilUrl = "https://www.mysite.com/lot/of/unpleasant/folders/and/my/url with spaces &\"others\".xls";
URI uri = null;
String[] urlParts = evilUrl.split("://");
String scheme = urlParts[0];
urlParts = urlParts[1].split("/");
String host = urlParts[0];
StringBuilder sb = new StringBuilder('/');
for (int i = 1; i < urlParts.length; i++) {
    sb.append('/');
    sb.append(urlParts[i]);
}
uri = new URI(scheme, host, sb.toString(), null);
System.out.println(uri.toASCIIString());

Y da este (mejor) resultado:

https://www.mysite.com/lot/of/unpleasant/folders/and/my/url%20with%20spaces%20&%22others%22.xls

Pero no estoy seguro de si hay una solución lista para usar para este problema y me estoy rompiendo la cabeza por nada o si puedo confiar en que este código puede resolver mi problema casi con éxito.

Por cierto, ya visité algunos recursos sobre este tema:

Codificación de URL de Java de parámetros de cadena de consultaCodificación de dirección URL HTTP en JavaURLEncoder no puede traducir caracteres espaciales

Respuestas a la pregunta(1)

Su respuesta a la pregunta