Как правило, URI может быть безопасно создан только путем кодирования отдельных компонентов перед их сборкой в окончательный URI. В этом случае a%image.gif
является компонентом пути и должен быть закодирован в соответствии с производством пути (3.3 в rfc 2369).
Используйте java.net.URI
для создания легального URI (и URL):
URI uri = URI.create("http://localhost:8182/a%25image.gif");
System.out.println(uri.toASCIIString());
System.out.println(uri.getPath());
Вы должны увидеть выходные данные последнего оператора без кодировки.
Технически, второй URL не является недопустимым, image.gif
, будет рассматриваться как фрагмент. Но если хеш-символ является частью пути, он, конечно, также должен быть закодирован.