У меня есть строка типа http://google.com/search/q=<%= name %>
.
Сторонняя js-библиотека, которую я не могу контролировать, убегает от этого к "http://google.com/search/q=%3C%=%20name%20%%3E"
который Javascript может успешно преобразовать в исходную строку с помощью
unescape("http://google.com/search/q=%3C%=%20name%20%%3E")
Но URLDecode.decode("http://google.com/search/q=%3C%=%20name%20%%3E")
в Java выдает IllegalArgumentException
из-за неэкранированного литерала %
в строке, что, конечно, правильно и соответствует спецификации, но это усложняет обработку на стороне сервера.
Прежде чем я попытаюсь исправить плохой JS-побег на стороне сервера с помощью регулярных выражений (поскольку, как уже упоминалось, я не могу изменить сторону JS), я хотел бы знать, существует ли более разрешительный API декодирования URL/URI Java, который бы работать так же, как unescape
в Javascript, то есть игнорировать отдельные символы «%» и декодировать только то, что можно декодировать.