REST 处理编码问题

2018-08-08 13:59 更新

处理中文乱码

我们一般都会将项目和代码的编码格式设置为 UTF-8 ,但是尽管如此,有时还是会出现乱码的情况,怎么办?

我们在 handle-json-xml项目的基础上,进行修改成为另外一个新项目。

将 MyResource.java 改为如下:

@Path("myresource")
public class MyResource {

    /**
     * 方法处理 HTTP GET 请求。返回的对象以"text/plain"媒体类型
     * 给客户端
     *
     * @return String 以 text/plain 形式响应
     */
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Got it!";
    }


    /**
     * 方法处理 HTTP GET 请求。返回的对象以"application/xml"媒体类型
     * 给客户端
     *
     * @return MyPojo 以 application/xml 形式响应
     */
    @GET
    @Path("pojoxml")
    @Produces(MediaType.APPLICATION_XML)
    public MyBean getPojoXml() {
        MyBean pojo = new MyBean();
        pojo.setName("欢迎光临:waylau.com");
        pojo.setAge(28);
        return pojo;
    }

    /**
     * 方法处理 HTTP GET 请求。返回的对象以"application/json"媒体类型
     * 给客户端
     *
     * @return MyPojo 以 application/json 形式响应
     */
    @GET
    @Path("pojojson")
    @Produces(MediaType.APPLICATION_JSON)
    public MyBean getPojoJson() {
        MyBean pojo = new MyBean();
        pojo.setName("欢迎光临:waylau.com");
        pojo.setAge(28);
        return pojo;
    }

}

启动项目,访问浏览器 http://localhost:8080/, 点击“POJO JSON” 或者 “POJO XML”,显示如下,中文已乱。

encoding-format-01

问题解决

在返回的数据里面,我们设置编码格式 charset=utf-8,关键代码如下:

private final static String CHARSET_UTF_8 = "charset=utf-8";

@GET
@Path("pojoxml")
@Produces(MediaType.APPLICATION_XML + ";" + CHARSET_UTF_8)
public MyBean getPojoXml() {
    MyBean pojo = new MyBean();
    pojo.setName("欢迎光临:waylau.com");
    pojo.setAge(28);
    return pojo;
}

@GET
@Path("pojojson")
@Produces(MediaType.APPLICATION_JSON + ";" + CHARSET_UTF_8)
public MyBean getPojoJson() {
    MyBean pojo = new MyBean();
    pojo.setName("欢迎光临:waylau.com");
    pojo.setAge(28);
    return pojo;
}

再次访问浏览器,查看到所有的中文显示都正常了。

encoding-format-02


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号