Encoding 如何在JAX-RS Jersey 2.0响应中将字符编码设置为utf-8
我已经编写了一个RESTService,它创建一个PDF并通过响应对象返回它 这是我的客户: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();
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();
}
}
这应该是我的评论而不是回答对不起。。。由于声誉不好,我不能发表评论