Java Jetty:如何允许HttpServletRequest.GetParameter()解析%symbol?

Java Jetty:如何允许HttpServletRequest.GetParameter()解析%symbol?,java,http,servlets,encoding,jetty,Java,Http,Servlets,Encoding,Jetty,在处理语法的URL时 jetty抛出一个IllegalArgumentException,表示它不是有效的十六进制值 我们试图将字符编码更改为UTF-16,但仍然无法解析%。是否有方法允许HttpServletRequest接口中的getParameter或getParameterMap函数解析“%” getParameter(“bar”)=“test%”的预期输出URL/URI中的符号%是用于处理URL/URI中字符的保留字符。-看 Jetty看到的是%字符,然后必须使用接下来的2个字符te

在处理语法的URL时

jetty抛出一个IllegalArgumentException,表示它不是有效的十六进制值

我们试图将字符编码更改为UTF-16,但仍然无法解析%。是否有方法允许HttpServletRequest接口中的getParameter或getParameterMap函数解析“%”


getParameter(“bar”)=“test%”的预期输出URL/URI中的符号
%
是用于处理URL/URI中字符的保留字符。-看

Jetty看到的是
%
字符,然后必须使用接下来的2个字符
te
来解码所需的UTF-8字节,这在测试用例中会导致无效的百分比编码

最基本的是,您的示例URL/URI是一个“格式错误的URI”。(尝试在或中解码)

还要注意的是,所有URL/URI处理实际上都是UTF-8(以不同的编码方案解析URL/URI是标准的,违反了规范)

“%”是URI的关键字,当您根据http协议请求“bar=%test%”时,jetty将出现解析异常。据我所知,“%”等于“%25”,因此您可以请求“”来实现它。