Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-RS编码_Java_Json_Rest_Encoding_Jax Rs - Fatal编程技术网

Java JAX-RS编码

Java JAX-RS编码,java,json,rest,encoding,jax-rs,Java,Json,Rest,Encoding,Jax Rs,我正在使用JAX-RS创建一个以JSON格式返回结果的web(rest)服务 除了编码,一切都正常 例如,我得到: ..., parameter:"Dep\u00f3sitos" ,... 而不是: ..., parameter:"Depósitos" ,... 我试过使用: @Produces("application/json; charset=UTF-8") 但问题依然存在。如果我使用以下命令将其作为XML返回: @Produces("application/xml") 一切都

我正在使用JAX-RS创建一个以JSON格式返回结果的web(rest)服务

除了编码,一切都正常

例如,我得到:

 ..., parameter:"Dep\u00f3sitos" ,...
而不是:

 ..., parameter:"Depósitos" ,...
我试过使用:

@Produces("application/json; charset=UTF-8")
但问题依然存在。如果我使用以下命令将其作为XML返回:

@Produces("application/xml")
一切都好


我需要设置什么来生成正确的类型?

看一看您对这个问题的回答“并看看它是否起到了作用。

我最终使用的是GSON,而不是IBM的JSON4J,后者在处理自定义Java类序列化方面被证明更好。

您所需要的是:

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

您可以编辑您的问题以包含JSON方法的实际代码吗?这是无用且危险的代码。
String.getBytes()
将字符串转换为平台的默认编码。假设您在Windows上,因此这可能是通过
CP1252
实现的。然后您用这些字节创建一个新的字符串对象,并告诉Java必须将这些字节解释为
UTF-8
,即使本例中的字节是
CP1252
文本,这将导致问题。进一步说明:
back
已经是一个字符串,Java字符串对象可以不经过编码就被视为文本(它们在内部使用
UTF-16
进行编码,但这并不重要)。只有当字符串转换为字节时,编码才变得重要。