Encoding 如何在JAX-RS Jersey 2.0响应中将字符编码设置为utf-8

Encoding 如何在JAX-RS Jersey 2.0响应中将字符编码设置为utf-8,encoding,header,jax-rs,response,jersey-2.0,Encoding,Header,Jax Rs,Response,Jersey 2.0,我已经编写了一个RESTService,它创建一个PDF并通过响应对象返回它 这是我的客户: final Response response = target.request(MediaType.APPLICATION_OCTET_STREAM).post(Entity.entity(building, MediaType.APPLICATION_JSON + ";charset=utf-8")); int responseCode = response.getStatus();

我已经编写了一个RESTService,它创建一个PDF并通过响应对象返回它

这是我的客户:

    final Response response = target.request(MediaType.APPLICATION_OCTET_STREAM).post(Entity.entity(building, MediaType.APPLICATION_JSON + ";charset=utf-8"));
    int responseCode = response.getStatus();
    String fileName = Response.getHeaderString("fileName");
下面是我的Web服务方法的重要部分:

    return Response.ok(report, MediaType.APPLICATION_OCTET_STREAM).header("fileName", reportName).build();
我的问题是我的文件名的umlauts被删除了: 例如,如果文件名为:“Gebäude2_2014”,客户端将收到“Gebäude2_2014”


有人有想法吗?

我已经尝试在我的项目中通过MediaType.APPLICATION\u OCTET\u流传递一个标题,并且您的“Gebäude2\u 2014”字符串读取正确


在我的项目中,所有源文件都使用UTF-8编码

您应该能够在web服务控制器中使用JAX-RS@products并强制使用UTF-8编码。这将解决您的问题

这里有一个例子:

@Path("/ws/v1") 
@Produces("\"application/json\";charset=utf-8")
public class Documents extends AbstractController {

    @GET
    @Path("/documents/{id}")
    public Response show(@Context UriInfo uri, @PathParam("id") String id) {

    ...
    return Response.ok(report, MediaType.APPLICATION_OCTET_STREAM).header("fileName", reportName).build();

    }
}

这应该是我的评论而不是回答对不起。。。由于声誉不好,我不能发表评论