2015-07-12 76 views
1

我正在使用RESTEasy在Wildfly 8.2中構建REST服務。這基本上工作,但它不是UTF-8。如何強制RESTEasy(Wildfly 8.2)使用UTF8?

我的配置是這樣的: 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。

[更新]
當我添加到的jboss-web.xml中這一點,甚至不工作:

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

(我不明白爲什麼UTF-8是不是默認在所有。在我看來這是必須的)

+0

引用爲什麼UTF-8不是默認值。 AFAIK沒有規定爲URI使用UTF-8的標準。常用的方法是使用ISO-8859-1並對所有不適合此字符集的字符進行網址編碼。 – lefloh

+0

我試圖在jboss-web.xml和standalone.xml中設置''作爲[描述在這裏](https://issues.jboss.org/browse/WFLY-2533? focusedCommentId = 12933050&page = com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12933050)但無效果。我用Wildfly 8.1.0.Final試了一下。也許你可以嘗試修復版本(8.0.0.CR1),看看它是否有效? – lefloh

+0

@lefloh當我創建一個測試客戶端並向我的服務器發送UTF-8請求時,編碼在響應輸出上工作。 – Bevor

回答

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> 
+0

不幸的是,這是行不通的。同樣的結果,編碼保持windows-1252。我在管理控制檯中進行配置,以確保不會將其放置在standalone.xml中的錯誤位置 – Bevor

+2

Wildfly正在使用Undertow,因此設置Tomcat屬性不再有效。 – lefloh

+0

這是針對jboss的7,wildfly不再使用apache catalina。 – caarlos0

0

的問題也許不存在。我會解釋一下,我有以下情況:

當我在localhost(wildfly 8.x)上測試一個窗體時,它不起作用,顯示和寫入都會破壞字符。但是,當我從相同的源代碼構建一個project.war併發送到測試服務器時,一切正常。

我測試了任何可以使用的語言,包括中文,烏克蘭語(西里爾文),希臘語,從左到右和從右到左的語言,即使是在同一個單詞中也是如此。

嘗試測試您的項目在測試服務器上發送.war。

+0

目前我不再有這個問題了,因爲我沒有用例來傳遞這些參數。我將整個對象傳遞給端點。這些對象本身包含任何語言的屬性。它似乎返回正確的值作爲響應,並將正確的編碼存儲到數據庫中。 – Bevor

相關問題