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;
        }
  • 相关阅读:
    Android 传感器应用
    WebStrom9 体验nodejs
    Web前端框架 小记
    接入淘宝API(PHP版本)
    Android SDK 国内镜像
    Ubuntu14.04 搭建 node.js 环境(Binaries方式)
    C# 异常类型及对应异常类
    .net中序列化读写xml方法的总结
    ASp.NET Core Centos7运行环境搭建
    Linux Centos 常用命令
  • 原文地址:https://www.cnblogs.com/roy-blog/p/7048401.html
Copyright © 2011-2022 走看看