Java Jboss RestEasy不';t使用UTF-8编码
我正在Linux环境中使用Jboss EAP 6.2和Java Jboss RestEasy不';t使用UTF-8编码,java,utf-8,jboss,character-encoding,resteasy,Java,Utf 8,Jboss,Character Encoding,Resteasy,我正在Linux环境中使用Jboss EAP 6.2和RestEasy库(RestEasy jaxrs 2.2.1.GA) 每个客户端服务响应的主体不使用UTF-8编码。 下面是一个客户端的代码示例: ClientRequest request = new ClientRequest(properties.getProperty("sgprof.service.url")); request.accept("application/json;charset=UTF-8"); request.qu
RestEasy
库(RestEasy jaxrs 2.2.1.GA
)
每个客户端服务响应的主体不使用UTF-8编码。
下面是一个客户端的代码示例:
ClientRequest request = new ClientRequest(properties.getProperty("sgprof.service.url"));
request.accept("application/json;charset=UTF-8");
request.queryParameter("key", "value");
ClientResponse<String> response = request.post(String.class);
String jsonResponse = response.getEntity();
您可以在服务声明中指定编码。。检查以下示例中的@products注释:
@GET
@Path("/customer/{customerUrn}")
@Produces(MediaType.APPLICATION_XML + ";charset=utf-8")
public Response getCustomerProducts(@PathParam("customerUrn")String customer);
希望有帮助 您可以在服务声明中指定编码。。检查以下示例中的@products注释:
@GET
@Path("/customer/{customerUrn}")
@Produces(MediaType.APPLICATION_XML + ";charset=utf-8")
public Response getCustomerProducts(@PathParam("customerUrn")String customer);
希望有帮助 我在使用JaxRS客户端API通过RestEasy读取(HTTP-GET)资源时遇到了类似的问题 客户端使用org.jboss.resteasy.plugins.providers.jsonp.AbstractJsonpProvider的getCharset方法来确定字符集。作为参数mediaType,使用响应头的“内容类型”:
public static Charset getCharset(final MediaType mediaType)
{
if (mediaType != null)
{
String charset = mediaType.getParameters().get("charset");
if (charset != null) return Charset.forName(charset);
}
return Charset.defaultCharset();
}
defaultCharset()在我的机器上返回windows-1252。相比之下,org.jboss.resteasy.plugins.providers.ProviderHelper默认使用allways UTF-8:
String charset = mediaType.getParameters().get("charset");
if (charset != null) return new String(bytes, charset);
else return new String(bytes, "UTF-8");
我找到了以下解决方案:
- 设置系统属性文件。encoding=“UTF-8”
- 将@products(MediaType.APPLICATION_XML+“charset=utf-8”)添加到 jax rs资源(如果您是所有者),以便 在处声明,在响应标头处声明内容类型
- 将响应读取为字符串并手动解析 (Json.createReader(新StringReader(jsonString)).readObject())
public static Charset getCharset(final MediaType mediaType)
{
if (mediaType != null)
{
String charset = mediaType.getParameters().get("charset");
if (charset != null) return Charset.forName(charset);
}
return Charset.defaultCharset();
}
defaultCharset()在我的机器上返回windows-1252。相比之下,org.jboss.resteasy.plugins.providers.ProviderHelper默认使用allways UTF-8:
String charset = mediaType.getParameters().get("charset");
if (charset != null) return new String(bytes, charset);
else return new String(bytes, "UTF-8");
我找到了以下解决方案:
- 设置系统属性文件。encoding=“UTF-8”
- 将@products(MediaType.APPLICATION_XML+“charset=utf-8”)添加到 jax rs资源(如果您是所有者),以便 在处声明,在响应标头处声明内容类型
- 将响应读取为字符串并手动解析 (Json.createReader(新StringReader(jsonString)).readObject())
application/json;charset=utf-8
?遗憾的是,旧版本的RESTeasy与区分大小写的字符集匹配。您可以尝试使用application/json;字符集=utf-8
?