【发布时间】:2015-04-17 13:44:01
【问题描述】:
我正在为现有的 Java 应用程序开发一些 REST Web 服务。 我正在使用 JBoss 的 Resteasy JAX-RS(因为现有应用程序在 JBoss serer 上运行)。
下面的网络服务应该根据 id 号返回一个 User 对象。
@GET
@Path("/getUser")
@Produces(MediaType.APPLICATION_XML)
public User getUser(@QueryParam("userId") int userId) {
return User.load(userId);
}
用户至少包含一个 ID 和一个名称。
public class User {
private int id;
private String name;
}
当 JAX-RS 生成 XML 文档时,它无法处理名称中可能出现的特殊字符,例如 æ ø å。
输出的 XML 声称以 UTF-8 编码,但仍然无法显示 æ ø å。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<user>
<id>18549</id>
<name>Københavner 1</name>
</user>
我尝试以这种方式转换为 XML 的每个对象都无法正确编码“æøå”。
有什么建议吗?搜索网络也没有多大帮助。
更新: 当我在客户端收到 XML 时,我首先将其作为字符串处理,然后再使用 JAXB 将其解组为对象。我忘记将字符串的编码设置为 UTF-8。 所以基本上在解组之前这样做:
new String(((String) response).getBytes(), "UTF-8");
【问题讨论】:
标签: java xml web-services rest