原來在個人專案時,用layui的資料表取得資料時,不會出現中文變問號問題
後來換了個項目,發現回傳的json資料到頁面中文變成了? ? ?問號。
於是開始排查問題出現的原因,首先jsp頁面頭部確保使用了UTF-8編碼:
<%@ page="" language="java" contenttype="text/html; charset=UTF-8" pageencoding="UTF-8">
既然不是頁面的問題,肯定就是後台問題,之前的後台代碼是:
/** * 获取json列表 */ @ResponseBody @RequestMapping("/getJsonAF02") public void getManyCategory(Page page, HttpServletRequest request,HttpServletResponse response) throws Exception{ logBefore(logger, "列表AF02"); // if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} // //校验权限 PageData pd = this.getPageData(); JSONObject jsonObject = new JSONObject(); PrintWriter out = response.getWriter(); try { page.setPd(pd); page.setCurrentPage(Integer.parseInt(pd.getString("page"))); pd.put("OPERATION_NUM", "10001"); ListvarList = af02Service.listForSCJ(page); // 列出AF02列表 //前台通过key值获得对应的value值 jsonObject.put("code", 0); jsonObject.put("msg", "测试"); jsonObject.put("count",page.getTotalResult()); jsonObject.put("data", varList); } catch (Exception e) { logger.error(e.toString(), e); } String result = jsonObject.toString(); out.write(result); out.close(); }
排查了一下,發現在這段程式碼上加上response.setContentType("text/html;charset=utf-8");:
/** * 获取json列表 */ @ResponseBody @RequestMapping("/getJsonAF02") public void getManyCategory(Page page, HttpServletRequest request,HttpServletResponse response) throws Exception{ logBefore(logger, "列表AF02"); // if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限 PageData pd = this.getPageData(); response.setContentType("text/html;charset=utf-8");// 加上这个处理问号 JSONObject jsonObject = new JSONObject(); PrintWriter out = response.getWriter(); try { page.setPd(pd); page.setCurrentPage(Integer.parseInt(pd.getString("page"))); pd.put("OPERATION_NUM", "10001"); ListvarList = af02Service.listForSCJ(page); // 列出AF02列表 //前台通过key值获得对应的value值 jsonObject.put("code", 0); jsonObject.put("msg", "测试"); jsonObject.put("count",page.getTotalResult()); jsonObject.put("data", varList); } catch (Exception e) { logger.error(e.toString(), e); String result = jsonObject.toString(); out.write(result); out.close(); }
傳到頁面就不會出現中文亂碼了
原來的後來的專案的springmvc設定檔裡面沒有相關的配置,之前的個人專案上有這段配置:
<%@ page="" language="java" contenttype="text/html; charset=UTF-8" pageencoding="UTF-8">
嗯,算是踩了個坑,分享一下
在RequestMapping裡加上
produces = "text/plain;charset=UTF-8"
到此,相信大家對「java返回json請求中文變成問號怎麼解決」有了更深的了解,不妨來實際操作一番吧!這裡是本站,更多相關內容可以進入相關頻道查詢,追蹤我們,繼續學習!
以上是java回傳json請求中文變成問號怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!