java返回json请求中文变成问号怎么解决
短信预约 -IT技能 免费直播动态提醒
本篇内容主要讲解“java返回json请求中文变成问号怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java返回json请求中文变成问号怎么解决”吧!
java返回json请求中文变成问号
原来在个人项目时,用layui的数据表格获取数据时,不会出现中文变问号问题
后来换了个项目,发现返回的json数据到页面中文变成了???问号。
于是开始排查问题出现的原因,首先jsp页面头部确保使用了UTF-8编码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
既然不是页面的问题,肯定就是后台问题,之前的后台代码是:
@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"); List<PageData> varList = 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");:
@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"); List<PageData> varList = 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配置文件里面没有相关的配置,之前的个人项目上有这段配置:
<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json;charset=UTF-8"/> </bean> </mvc:message-converters> </mvc:annotation-driven>
嗯,算是踩了个坑,分享一下
json返回中文全是问号
在RequestMapping里加上
produces = "text/plain;charset=UTF-8"
到此,相信大家对“java返回json请求中文变成问号怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341