2011-03-02 34 views
8

我正在使用JAX-RS創建一個以JSON格式返回結果的Web(休息)服務。JAX-RS編碼

一切都正常,除了編碼。

例如,我得到:

..., parameter:"Dep\u00f3sitos" ,... 

相反的:

..., parameter:"Depósitos" ,... 

我已經嘗試使用:

@Produces("application/json; charset=UTF-8") 

但問題仍然存在。如果我用XML返回它:

@Produces("application/xml") 

一切正常。

我需要設置什麼才能生成正確的類型?

+0

您可以編輯您的問題,包括你的JSON方法的實際代碼 – 2011-03-04 06:30:01

回答

1

我結束了使用,而不是IBM的JSON4J被證明是在處理自定義的Java類的序列好得多GSON 。

0

所有你需要的是這樣的:

String back = "Depósitos"; 
return new String(back.getBytes(), "UTF8"); 
+0

這是useles? s和危險代碼。 'String.getBytes()'將字符串轉換爲平臺的默認編碼。假設你在Windows上,所以這可能由'CP1252'。然後你從這些字節中創建一個新的String對象,並告訴Java字節必須被解釋爲'UTF-8',即使在這個例子中字節是'CP1252'文本,這將導致問題。更進一步:'back'已經是一個String,Java String對象可以被視爲沒有編碼的文本(它們在內部用'UTF-16'編碼,但這沒關係)。僅當字符串轉換爲字節時,編碼才變得重要。 – Sky 2018-03-06 16:46:54