2011-03-02 49 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