java返回json请求中文变成问号的问题及解决
作者:GuoMiao丿 时间:2023-11-01 02:56:34
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");
?
?? ??? ??? ?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");:
? /**
?? ? * 获取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");
?
?? ??? ??? ?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"
来源:https://blog.csdn.net/weixin_41318195/article/details/83271471
标签:java,json,中文,问号
0
投稿
猜你喜欢
Android App获取屏幕旋转角度的方法
2021-12-26 10:42:19
Java链表数据结构及其简单使用方法解析
2022-11-20 23:42:53
java 中HashCode重复的可能性
2021-09-13 17:38:05
C#多线程处理多个队列数据的方法
2021-12-26 19:31:02
Java SpringBoot拦截器详解
2021-11-01 15:29:37
Spring实战之协调作用域不同步的Bean操作示例
2023-01-23 02:48:10
HorizontalScrollView水平滚动控件使用方法详解
2023-02-19 21:12:27
C#多线程之线程池ThreadPool用法
2021-07-21 06:28:40
Android实现多点触控功能
2021-10-18 08:39:33
利用Java实现在PDF中添加工具提示
2022-08-07 18:47:02
解决Java提示正在尝试分配更低的访问权限问题
2023-11-04 09:31:08
Android onClick方法与setOnClickListener方法对比
2022-02-09 22:21:40
详解EventBus 3.x 的快速使用
2021-09-04 21:00:29
Spring Security基于散列加密方案实现自动登录功能
2022-09-19 01:10:22
java递归算法的实例详解
2021-06-07 12:15:17
SpringBoot整合RocketMQ的详细过程
2023-07-10 05:07:00
Entity Framework主从表的增删改
2023-10-05 18:56:27
Android模拟开关按钮点击打开动画(属性动画之平移动画)
2021-09-05 17:48:52
SpringBoot实现异步事件驱动的方法
2023-11-01 07:48:54
Java 添加、读取和删除 Excel 批注的操作代码
2023-10-28 21:55:36