首页 >Java >java教程 >java返回json请求中文变成问号怎么解决

java返回json请求中文变成问号怎么解决

WBOY
WBOY转载
2023-04-15 09:25:071942浏览

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删除