我正在使用RESTEasy构建一个REST服务,以便在Wildfly 8.2中使用。这基本上有效,但它不是UTF-8。
我的配置如下所示:
我使用自动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根本不是默认的。在我看来这是必须的)
答案 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的项目。