java返回json请求中文变成问号的问题及解决

 更新时间:2022年07月01日 10:03:54   作者:GuoMiao丿  
这篇文章主要介绍了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"

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Security跳转页面失败问题解决

    Spring Security跳转页面失败问题解决

    这篇文章主要介绍了Spring Security跳转页面失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • hadoop 单机安装配置教程

    hadoop 单机安装配置教程

    单机安装主要用于程序逻辑调试。安装步骤基本通分布式安装,包括环境变量,主要Hadoop配置文件,SSH配置等,需要的朋友可以参考下
    2012-11-11
  • Java Runtime类详解_动力节点Java学院整理

    Java Runtime类详解_动力节点Java学院整理

    Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。下面通过本文给大家分享Java Runtime类详解,需要的朋友参考下吧
    2017-04-04
  • Java接口测试Cookie与token原理解析

    Java接口测试Cookie与token原理解析

    这篇文章主要介绍了Java接口测试Cookie与token原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • java 获取数据库连接的实现代码

    java 获取数据库连接的实现代码

    本篇文章是对在java中获取数据库连接的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 如何正确控制springboot中bean的加载顺序小结篇

    如何正确控制springboot中bean的加载顺序小结篇

    这篇文章主要介绍了如何正确控制springboot中bean的加载顺序总结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java陷阱之慎用入参做返回值详解

    Java陷阱之慎用入参做返回值详解

    这篇文章主要给大家介绍了关于Java陷阱之慎用入参做返回值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java日期转换注解配置date format时间失效

    Java日期转换注解配置date format时间失效

    这篇文章主要为大家介绍了Java日期转换注解配置date format时间失效,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • SpringBoot如何使用Undertow做服务器

    SpringBoot如何使用Undertow做服务器

    这篇文章主要介绍了SpringBoot如何使用Undertow做服务器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java面向对象基础教学(一)

    Java面向对象基础教学(一)

    这篇文章主要介绍了Java的面相对象编程思想,包括类对象方法和封装继承多态等各个方面的OOP基本要素,非常推荐,需要的朋友可以参考下,希望可以对你有所帮助
    2021-07-07

最新评论