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

时间:2015-07-12 17:12:59

标签: encoding utf-8 jboss resteasy wildfly-8

我正在使用RESTEasy构建一个REST服务,以便在Wildfly 8.2中使用。这基本上有效,但它不是UTF-8。

我的配置如下所示: wildfly encoding

我使用自动JaxRs激活Wildfly,生成这个空类,使RESTEasy工作:

@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。

[UPDATE]
当我将它添加到jboss-web.xml中时,它甚至无法工作:

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

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

2 个答案:

答案 0 :(得分:1)

浏览器/ 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>

答案 1 :(得分:0)

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

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

我测试了我能用的任何语言,采用了最不同的语言:汉语,ucrainian(西里尔语),希腊语,从左到右和从右到左的语言,即使在同一个单词中它也可以。

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