为嵌入的 Undertow 设置默认编码

Posted

技术标签:

【中文标题】为嵌入的 Undertow 设置默认编码【英文标题】:Set default encoding for Undertow embedded 【发布时间】:2017-03-24 04:26:16 【问题描述】:

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

【问题讨论】:

【参考方案1】:

我在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。同样对于非部署模式,您可以使用选项来更改默认编码:

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

【讨论】:

以上是关于为嵌入的 Undertow 设置默认编码的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式配置嵌入式 undertow 服务器

使用 Undertow 服务 AngularJS

Undertow和jetty做嵌入式,哪个更好

如何关闭嵌入式 Undertow 应用程序?

idea访问undertown报错

在嵌入式Jetty中设置默认字符编码和内容类型