首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jersey web服务json utf-8编码

jersey web服务json utf-8编码
EN

Stack Overflow用户
提问于 2012-02-20 18:38:03
回答 7查看 88.3K关注 0票数 48

我用Jersey 1.11做了一个小的Rest网络服务。当我调用返回Json的url时,非英文字符的字符编码有问题。对应于Xml的url ("test.xml“)使其在起始xml标记中成为utf-8。

如何让url "test.json“返回utf-8编码的响应?

以下是该服务的代码:

代码语言:javascript
复制
@Stateless
@Path("/")
public class RestTest {   
    @EJB
    private MyDao myDao;

    @Path("test.xml/")
    @GET
    @Produces(MediaType.APPLICATION_XML )
    public List<Profile> getProfiles() {    
        return myDao.getProfilesForWeb();
    }

    @Path("test.json/")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Profile> getProfilesAsJson() {
        return myDao.getProfilesForWeb();
    }
}

这是服务使用的pojo:

代码语言:javascript
复制
package se.kc.mimee.profile.model;

@XmlRootElement
public class Profile {
    public int id;
    public String name;

    public Profile(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public Profile() {}

}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-02-20 18:55:02

Jersey在默认情况下应该总是生成utf-8,听起来问题似乎是你的客户端没有正确地解释它( xml声明并没有“使”它成为utf-8,只是告诉客户端如何解析它)。

您在哪个客户端上看到了这些问题?

有效的JSON只应该是Unicode (utf-8/16/32);解析器应该能够自动检测编码(当然,有些解析器不能),所以JSON中没有编码声明。

您可以将其添加到Content-Type中,如下所示:

代码语言:javascript
复制
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
票数 100
EN

Stack Overflow用户

发布于 2016-05-19 13:27:29

如果@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")不起作用,请尝试:

@Produces("application/json;charset=utf-8")

理论上是一样的,但第一个选项对我不起作用。

票数 6
EN

Stack Overflow用户

发布于 2013-12-13 23:11:10

如果不能将字符集添加到每个资源中,那么this question的答案可能会有所帮助,它展示了如何强制使用默认字符集。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9359728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档