zoukankan      html  css  js  c++  java
  • springmvc返回json字符串中文乱码问题

    问题:

    后台代码如下:

        @RequestMapping("menuTreeAjax")
        @ResponseBody
        /**
         * 根据parentMenuId获取菜单的树结构
         * @param parentMenuId
         * @return
         */
        public String menuTreeAjax(Integer parentMenuId) {
            JSONArray array = menuService.getTreeMenuByParentMenuId(parentMenuId);
            return array.toString();
        }

    前台代码如下:

        $.ajax({
                url:'menuTreeAjax?parentMenuId=${menu.menuId}',
                async:false,
                dataType:"json",
                success:function(data){
                    menuTree=data;
                    alert(data[0].text);
                }
            });

    发现前台显示的json数据中的中文为???。乱码问题。

    原因:

    Spring中解析字符串的转换器默认编码居然是ISO-8859-1

    如下所示:

    解决方法:

    方法一,使用(produces = "application/json; charset=utf-8")

        @RequestMapping(value="menuTreeAjax", produces = "application/json; charset=utf-8")
        @ResponseBody
        /**
         * 根据parentMenuId获取菜单的树结构
         * @param parentMenuId
         * @return
         */
        public String menuTreeAjax(Integer parentMenuId) {
            JSONArray array = menuService.getTreeMenuByParentMenuId(parentMenuId);
            return array.toString();
        }

    方法二:在springmvc.xml配置:

      <!-- 处理请求返回json字符串的乱码问题 -->  
         <mvc:annotation-driven>
            <mvc:message-converters>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>

     PS:如果返回的不是json,而只是一个字符串,则只需要这样就可以了。将produces改为text/html

        @ResponseBody
        @RequestMapping(value="webserviceDemo1", produces = "text/html; charset=utf-8")
        public String webserviceDemo1(){
            WeatherServiceService factory=new WeatherServiceService();
            WeatherService service=factory.getWeatherServicePort();
            String result=service.getWeatherByCityname("厦门");
            return result;
        }
  • 相关阅读:
    c# netcore 发送http请求并接收返回数据
    CentOS7 nginx安装与卸载
    c# 取出特定标签的内容 去除html标签
    dotnet运行项目
    hangfire自定义访问api接口
    10万个数中取最大的10个数
    指定的服务已标记为删除
    gitlab-配置邮件
    gitlab-centos的安装
    ansible-任务控制tags
  • 原文地址:https://www.cnblogs.com/roy-blog/p/7048401.html
Copyright © 2011-2022 走看看