温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-07-01 14:09:18 来源:亿速云 阅读:412 作者:iii 栏目:开发技术

本篇内容主要讲解“java返回json请求中文变成问号怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java返回json请求中文变成问号怎么解决”吧!

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"

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

到此,相信大家对“java返回json请求中文变成问号怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI