嵌入式Jetty NotUTF8异常

嵌入式Jetty NotUTF8异常,jetty,url-encoding,embedded-jetty,Jetty,Url Encoding,Embedded Jetty,我们正在运行嵌入jetty容器中的web应用程序。在jsp上有一个jsp:forward。jsp:param的值是ISO-8859-1。我怎样才能告诉Jetty,URL是ISO-8859-1 系统属性org.eclipse.jetty.util.UrlEncoding.charset不工作org.eclipse.jetty.util.UTF8可追加$notutf8异常:无效的UTF8!UTF8序列不完整…被抛出 以下是jsp的一个示例: <%@ page language="java" p

我们正在运行嵌入jetty容器中的web应用程序。在jsp上有一个jsp:forward。jsp:param的值是
ISO-8859-1
。我怎样才能告诉Jetty,URL是ISO-8859-1

系统属性org.eclipse.jetty.util.UrlEncoding.charset不工作<代码>org.eclipse.jetty.util.UTF8可追加$notutf8异常:无效的UTF8!UTF8序列不完整…被抛出

以下是jsp的一个示例:

<%@ page language="java" pageEncoding="ISO-8859-1" %>
...
<jsp:forward page="/forwardToAServlet">
<jsp:param name="param1" value="an+example+with+an+umlaut+gr%F6%DFere" />
</jsp:forward>
我在org.eclipse.jetty.server.Request类的mergeQueryString(字符串查询)方法的源代码中发现了以下内容:

UrlEncoded.decodeTo(query,parameters, StandardCharsets.UTF_8,-1); //have to assume UTF-8 because we can't know otherwise
因此,在方法URLEncoded.decodeTo()中,UTF-8被用作编码集,而不是System.setProperty(“org.eclipse.jetty.util.UrlEncoding.charset”,“ISO-8859-1”)的编码集


我能解决这个问题吗?有什么想法吗?:-)

我怀疑这是Jetty 9.1.0中的一个bug

所以我在

它的缺点是
Dispatcher.forward()
需要执行
Request.mergeQueryString()
,但这将解码传入的查询字符串(HTTP的默认值),这将阻止在
org.eclipse.jetty.util.UrlEncoding.charset
属性中指定的重写编码/字符集

Jetty项目的HTTP规范负责人将评估这是否是Jetty中的一个有效错误或HTTP规范的要求,并且必须保持原样


遵循该bug,同时考虑使用UTF-8,因为这是事实上的网络编码。(例如:HTTP/2规范上的早期指示也表明内容/文档编码将被搁置,但协议编码将在UTF-8中严格执行)

您可以发布(在您的问题中)有问题的JSP/forward的一个例子?也包括完整的stacktrace。注意:使用
org.eclipse.jetty.util.UrlEncoding.charset
System属性只能从命令行工作,不能通过
System.setProperty()
call.Hi Joakim嵌入,谢谢您的回复。:-)我在问题中添加了一个示例和stacktrace。System.setProperty在类UrlEncoded中正常工作(即ISO-8859-1)。
UrlEncoded.decodeTo(query,parameters, StandardCharsets.UTF_8,-1); //have to assume UTF-8 because we can't know otherwise