本篇内容主要讲解“java返回JSON请求中文变成问号怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java返回json请求中文变成问号怎么解决”吧!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>
嗯,算是踩了个坑,分享一下
在RequestMapping里加上
produces = "text/plain;charset=UTF-8"
到此,相信大家对“java返回json请求中文变成问号怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
--结束END--
本文标题: java返回json请求中文变成问号怎么解决
本文链接: https://lsjlt.com/news/342468.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0