后来换了个项目,发现返回的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请求中文变成问号怎么解决的详细内容。
