有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用JAXR设置字符集?

如何使用JAX-RS设置字符集?我尝试了@Produces("text/html; charset=UTF-8"),但被忽略了,只有text/html使用HTTP头发送。我想在MessageBodyWriter中设置字符集,但不想通过自己通过反射分析@Products注释来提取媒体类型


共 (3) 个答案

  1. # 1 楼答案

    也可以使用ResponseBuilder。标题(…)方法使用字符集设置内容类型。请参阅下面的代码示例(使用JAX-RS 1.1.1、CXF 2.3.1)

    final Response myResponse = Response.status(Response.Status.BAD_REQUEST)
        .entity("La requête n'est pas correcte.\n ...")
        .header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN+"; charset=ISO-8859-15" )
        .build();
    
  2. # 2 楼答案

    首先在资源类方法上设置@Produces注释

    然后在返回类型的MessageBodyWriter中,可以在writeTo()方法中执行此操作:

    response.setContentType(mediaType.toString);
    

    备注:您可以通过以下方式将response注射到writer中:

    @Context
    protected HttpServletResponse response;
    
  3. # 3 楼答案

    只是为了让它保持最新。不确定Jersey的旧版本是否支持此功能,但如果您决定使用ResponseBuilder,则可以确定。标题(…)方法您可以使用MediaType方法with charset()。像这样:

    return Response.status(Status.OK)
             .entity(result)
             .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_TYPE.withCharset("utf-8"))
             .build());