首頁 >Java >java教程 >java回傳json請求中文變成問號怎麼解決

java回傳json請求中文變成問號怎麼解決

WBOY
WBOY轉載
2023-04-15 09:25:071939瀏覽

java回傳json請求中文變成問號

原來在個人專案時,用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">

嗯,算是踩了個坑,分享一下

json返回中文全是問號

在RequestMapping裡加上

produces = "text/plain;charset=UTF-8"

java回傳json請求中文變成問號怎麼解決

到此,相信大家對「java返回json請求中文變成問號怎麼解決」有了更深的了解,不妨來實際操作一番吧!這裡是本站,更多相關內容可以進入相關頻道查詢,追蹤我們,繼續學習!

以上是java回傳json請求中文變成問號怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除