Encoding 如何强制RESTEasy(Wildfly 8.2)使用UTF8?

Encoding 如何强制RESTEasy(Wildfly 8.2)使用UTF8?,encoding,utf-8,jboss,resteasy,wildfly-8,Encoding,Utf 8,Jboss,Resteasy,Wildfly 8,我正在用Wildfly 8.2中易于使用的REST构建REST服务。这基本上是可行的,但不是UTF-8 我的配置如下所示: 我使用Wildfly的自动JaxRs激活来生成这个空类,使REST易于工作: @ApplicationPath("/rest") public class JaxRsActivator extends Application { } 我的REST实现如下所示: @Path("/user") @Produces(MediaType.APPLICATION_JSON) pu

我正在用Wildfly 8.2中易于使用的REST构建REST服务。这基本上是可行的,但不是UTF-8

我的配置如下所示:

我使用Wildfly的自动JaxRs激活来生成这个空类,使REST易于工作:

@ApplicationPath("/rest")
public class JaxRsActivator extends Application
{
}
我的REST实现如下所示:

@Path("/user")
@Produces(MediaType.APPLICATION_JSON)
public class UserResource
{
    @GET
    @Path("/{firstname}-{lastname}")
    public Response printMessage(@PathParam("firstname") String param1, @PathParam("lastname") String param2)
    {
        return Response.ok().entity(new TestObject(param1, param2)).build();
    }
}
当我通过调用此资源时

http://localhost:8080/mywebserver/rest/user/Déborah-François
因此,我得到:

{"name1":"Déborah","name2":"François"}
交付的编码是windows-1252。为什么会这样?我想在Wildfly上配置UTF-8

[更新]
当我将其添加到jboss-web.xml中时,它甚至不起作用:

<default-encoding>UTF-8</default-encoding>
UTF-8

(我不明白为什么UTF-8不是默认的。我认为这是必须的)

浏览器/HTTP客户端发送URL,显然是UTF-8,但它没有告诉我们。因此,使用HTTP默认编码ISO-8859-1

在JBoss中,单机服务器可以在standalone.xml中配置为:

<system-properties>
    <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
    <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING"
        value="true"/>
</system-properties>

问题可能不存在。我会解释,我有以下情况:

当我在localhost(wildfly 8.x)上测试表单时,它不起作用,显示和写入do-break字符。但是,当我从相同的源代码构建project.war并发送到测试服务器时,一切正常

我测试了所有我能测试的语言,选择了最不同的语言:汉语、乌克兰语(西里尔语)、希腊语、从左到右和从右到左的语言,即使是在同一个单词中,也是有效的


尝试在测试服务器上发送.war来测试您的项目。

不幸的是,这不起作用。同样的结果,编码保持在windows-1252。我在管理控制台中进行了配置,以确保不会将其放置在standalone中的错误位置。xmlWildfly正在使用Undertow,因此设置Tomcat属性不再有效。这是针对jboss as 7,wildfly不再使用apache catalina。请参阅为什么UTF-8不是默认值。AFAIK没有指定对URI使用UTF-8的标准。常用的方法是使用ISO-8859-1和url编码所有不适合此字符集的字符。我尝试在jboss-web.xml以及standalone.xml中设置
,但没有效果。我用Wildfly 8.1.0.Final试过了。也许你可以用修复版本(8.0.0.CR1)试试,看看它是否能在那里工作?@lefloh当我创建一个测试客户端并向我的服务器发送一个UTF-8请求时,编码会在响应输出上工作。你说的“创建一个测试客户端”是什么意思?也许这个客户端url编码utf-8字符?@lefloh我编写了一个简单的Java类,可以将一个编码为utf-8的请求发送到我的Web服务器。响应被正确编码。目前我不再有这个问题,因为我没有传递这些参数的用例。我将整个对象传递到端点。这些对象本身包含任何语言的属性。它似乎在响应中返回正确的值,并将正确的编码存储到数据库中。