zoukankan      html  css  js  c++  java
  • ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码

    ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ©Copyright 蕃薯耀 2017年7月27日

    http://www.cnblogs.com/fanshuyao/

    一、问题描述

    使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢?

    此处为的异步请求的配置:

    Java代码  收藏代码
    1. async: {  
    2.     enable: true,  
    3.     url: basePath + '/sysMenu/listSysMenu',  
    4.     autoParam: ["id=parentId"]  
    5. }  

    SpringMvc中文字符处理:

    Java代码  收藏代码
    1. <mvc:annotation-driven>  
    2.     <mvc:message-converters>  
    3.     <bean class="org.springframework.http.converter.StringHttpMessageConverter">  
    4.         <property name="supportedMediaTypes">  
    5.              <list>  
    6.                     <value>application/json;charset=UTF-8</value>  
    7.             <value>text/html;charset=UTF-8</value>  
    8.          </list>  
    9.         </property>  
    10.    </bean>  
    11.   </mvc:message-converters>  
    12. </mvc:annotation-driven>  

    返回的结果有中文乱码:

    Js代码  收藏代码
    1. [  
    2.     {  
    3.         "menuId": "880095098165986816",  
    4.         "menuName": "????",  
    5.         "parentId": "880095098165986815",  
    6.         "menuUrl": "http://localhost:8080/imovie-manage/sysMenu/listSysMenuUI",  
    7.         "menuIcon": "",  
    8.         "menuSort": 1,  
    9.         "isEnable": 1,  
    10.         "parentMenuName": "??",  
    11.         "id": "880095098165986816",  
    12.         "name": "????",  
    13.         "pId": "880095098165986815"  
    14.     },  
    15.     {  
    16.         "menuId": "880095098165986817",  
    17.         "menuName": "???????",  
    18.         "parentId": "880095098165986815",  
    19.         "menuUrl": "http://localhost:8080/imovie-manage/sysMenu/treeSysMenuUI",  
    20.         "menuIcon": "",  
    21.         "menuSort": 1,  
    22.         "isEnable": 1,  
    23.         "parentMenuName": "??",  
    24.         "id": "880095098165986817",  
    25.         "name": "???????",  
    26.         "pId": "880095098165986815"  
    27.     }  
    28. ]  

    二、解决方案

    经过排查,发现是SpringMvc中文字符处理的supportedMediaTypes少了一种类型。

    从浏览器发送的请求来看:



     

    异步刷新使用的是post请求,但从服务器返回的时候,Content-Type为:text/plain;charset=ISO-8859-1

    charset是ISO-8859-1,而不是UTF-8,而SpringMvc处理的中文乱码没有包含这种类型,所以导致中文乱码。

    所以最后的解决方法是在SpringMvc中文处理加上text/plain这个类型,如下:

    Java代码  收藏代码
    1. <value>text/plain;charset=UTF-8</value>  

     具体如下:

    Java代码  收藏代码
    1. <property name="supportedMediaTypes">  
    2.     <list>  
    3.         <value>application/json;charset=UTF-8</value>  
    4.     <value>text/html;charset=UTF-8</value>  
    5.     <value>text/plain;charset=UTF-8</value>  
    6.     </list>  
    7. </property>  

    然后问题就这样解决了。^_^

    (如果你觉得文章对你有帮助,欢迎捐赠,^_^,谢谢!) 

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ©Copyright 蕃薯耀 2017年7月27日

    http://www.cnblogs.com/fanshuyao/

  • 相关阅读:
    SeaweedFS上手使用指南
    XyTalk企业即时通讯IM开始开源
    大数据项目相关技术栈(Hadoop周边技术)
    Hive SQL基础操作
    Applet Mode
    快速开始
    NetBeans启动Tomcat报“'127.0.0.1' 不是内部或外部命令”启动失败的解决办法
    运行带distance field的Hiero
    Game Loop的几种实现方式
    20150408
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/7245676.html
Copyright © 2011-2022 走看看