为 Undertow embedded 设置默认编码

Set default encoding for Undertow embedded

我在我的应用程序中使用 Undertow 作为嵌入式 HTTP 服务器。 URL 编码和查询参数的默认编码是 ISO-8859-1。我想使用 UTF-8。我没有在文档中找到任何内容。有什么想法吗?

我在 DeploynentInfo 上设置了 defaultEncoding。它帮助了我。

DeploymentInfo servletBuilder =
    Servlets
        .deployment()
        .setClassLoader(Main.class.getClassLoader())
        .setDeploymentName("myapp").setContextPath("/myapp")
        .setDefaultEncoding("UTF-8");

DeploymentManager manager = Servlets.defaultContainer().addDeployment(servletBuilder);
manager.deploy();

Undertow server = Undertow.builder()
    .addHttpListener(9090, "localhost")
    .setHandler(manager.start())
    .build();

server.start();

当前版本的 Undertow 默认编码是 UTF-8。同样对于 non-deploy 模式,您可以使用选项更改默认编码:

Undertow.builder()
       .setHandler(...)
       .setServerOption(UndertowOptions.URL_CHARSET, "UTF8")
       .addHttpListener(port, host)
       .build()
       .start();