REST 處理編碼問題

2018-08-08 13:59 更新

處理中文亂碼

我們一般都會將項目和代碼的編碼格式設(shè)置為 UTF-8 ,但是盡管如此,有時還是會出現(xiàn)亂碼的情況,怎么辦?

我們在 handle-json-xml項目的基礎(chǔ)上,進(jìn)行修改成為另外一個新項目。

將 MyResource.java 改為如下:

@Path("myresource")
public class MyResource {

    /**
     * 方法處理 HTTP GET 請求。返回的對象以"text/plain"媒體類型
     * 給客戶端
     *
     * @return String 以 text/plain 形式響應(yīng)
     */
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {
        return "Got it!";
    }


    /**
     * 方法處理 HTTP GET 請求。返回的對象以"application/xml"媒體類型
     * 給客戶端
     *
     * @return MyPojo 以 application/xml 形式響應(yīng)
     */
    @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 形式響應(yīng)
     */
    @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/, 點(diǎn)擊“POJO JSON” 或者 “POJO XML”,顯示如下,中文已亂。

encoding-format-01

問題解決

在返回的數(shù)據(jù)里面,我們設(shè)置編碼格式 charset=utf-8,關(guān)鍵代碼如下:

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號