解决Ajax加载JSon数据中文乱码问题

一、问题描述

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

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

Java代码

async: {
  enable: true,
  url: basePath + '/sysMenu/listSysMenu',
  autoParam: ["id=parentId"]
} 

SpringMvc中文字符处理:

Java代码

<mvc:annotation-driven>
  <mvc:message-converters>
  <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes">
       <list>
          <value>application/json;charset=UTF-8</value>
      <value>text/html;charset=UTF-8</value>
     </list>
    </property>
  </bean>
 </mvc:message-converters>
</mvc:annotation-driven> 

返回的结果有中文乱码:

Js代码

[
  {
    "menuId": "880095098165986816",
    "menuName": "????",
    "parentId": "880095098165986815",
    "menuUrl": "http://localhost:8080/imovie-manage/sysMenu/listSysMenuUI",
    "menuIcon": "",
    "menuSort": 1,
    "isEnable": 1,
    "parentMenuName": "??",
    "id": "880095098165986816",
    "name": "????",
    "pId": "880095098165986815"
  },
  {
    "menuId": "880095098165986817",
    "menuName": "???????",
    "parentId": "880095098165986815",
    "menuUrl": "http://localhost:8080/imovie-manage/sysMenu/treeSysMenuUI",
    "menuIcon": "",
    "menuSort": 1,
    "isEnable": 1,
    "parentMenuName": "??",
    "id": "880095098165986817",
    "name": "???????",
    "pId": "880095098165986815"
  }
] 

二、解决方案

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

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

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

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

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

Java代码

<value>text/plain;charset=UTF-8</value> 

具体如下:

Java代码

<property name="supportedMediaTypes">
  <list>
    <value>application/json;charset=UTF-8</value>
  <value>text/html;charset=UTF-8</value>
  <value>text/plain;charset=UTF-8</value>
  </list>
</property> 

总结

以上所述是小编给大家介绍的解决Ajax加载JSon数据中文乱码问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 用ajax传递json到前台中文出现问号乱码问题的解决办法

    我使用的Springmvc,在controller层传输一个json到前台,后台显示没问题,中文正常显示而到了前台 中文就变成了问号. 后来发现,因为在controller中返回json用了@ResponseBody,而spring源码中@ResponseBody 的实现类发现其默认的编码是 iso-8859-1,而项目用的编码为utf-8,所以传中文会出现乱码. 这里我使用了注解来解决: @RequestMapping(value="/echarts.do", produces =

  • JQuery ajax 返回json时出现中文乱码该如何解决

    使用jQuery ajax调用的返回json,中文乱码问题 Js代码如下: $.ajax({ url: '/test/testAction.do?method=test', type: 'POST', dataType: 'json', timeout: 5000, async: false, error: function(){ alert('获取数据失败!'); }, success: function(json){ jsObject = eval(json); } }); return j

  • 解决Ajax加载JSon数据中文乱码问题

    一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { enable: true, url: basePath + '/sysMenu/listSysMenu', autoParam: ["id=parentId"] } SpringMvc中文字符处理: Java代码 <mvc:annotation-driven> <mvc

  • 解决SpringMvc后台接收json数据中文乱码问题的几种方法

    1.使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码(问号???). 之前在网上找了各种解决方案,都行不通,最后发现是tomcat服务器接收数据的问题 解决方案: 方式一:在controller接收参数时,对参数进行转码 @ResponseBody @RequestMapping(value="/getJsonDataByCityName",produces="application/json") public String get

  • PHP读取mssql json数据中文乱码的解决办法

    PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. 解决办法如下: 这样,sql server 2008中的中文就可以在网页正常显示了. 如果要将中文正常插入到sql server 2008中,还要加入一条代码:$query = iconv("utf-8", "gbk//ignore", $query);//为了解决中文

  • ajax动态加载json数据并详细解析

    效果图 jsp代码 <form > 姓名:<input name="name" type="text"/> 年龄:<input name="age" type="text"/> <input type="button" class="get" value="get提交"/> <input type="bu

  • Python中使用json.load()和json.loads()加载json数据的方法实例

    目录 前言 预备知识: 使用方法 总结 前言 最近在python里面用json读取json文件,可是老是不成功,特此记录一下. 预备知识: def load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw): """Deserialize ``fp`` (a ``.read()``-suppor

  • jquery使用EasyUI Tree异步加载JSON数据(生成树)

    这几天因为工作需要,要做一个支持无限级的菜单. 我也是菜鸟一只,能想到的东西不多,所以用了Easy UI的tree组件. 不得不说,easyui确实很强大. 因为是无限级菜单,数据量可能有点大,所以考虑采用异步加载. 但是因为后台默认传来的数据是 一个实体,所以又在后台进行了JSON字符串拼接. 最后,在网上找了N多代码,然后又去问了好几个群里的网友,终于搞出来这个小东西. 一.HTML部分代码 <div id="categoryChooseDiv" title="请选

  • 详解Spring MVC3返回JSON数据中文乱码问题解决

    查了下网上的一些资料,感觉比较复杂,这里,我这几使用两种很简单的办法解决了中文乱码问题. Spring版本:3.2.2.RELEASE Jackson JSON版本:2.1.3 解决思路:Controller的方法中直接通过response向网络流写入String类型的json数据. 使用 Jackson 的 ObjectMapper 将Java对象转换为String类型的JSON数据. 为了避免中文乱码,需要设置字符编码格式,例如:UTF-8.GBK 等. 代码如下: import org.s

  • SpringMvc后台接收json数据中文乱码问题详解

    原因分析 使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码 其实乱码问题出现的原因,就是由于默认的tomcat配置,接收请求是以ISO-8859-1来转码,导致中文出现了乱码问题,只要能正确的以utf-8来转码,则可以解决乱码问题. 普通数据传输,从jsp页面传到后台controller,中文乱码问题解决方案 首先检查jsp页面编码格式是否是utf-8 设置中文过滤 <filter> <filter-name>characterEncodingFi

  • 客户端 使用XML DOM加载json数据的方法

    步骤: 1.引用Jquery 2.如果是IE,实例ActiveXObject:Firefox,实例DOMParser. 3.处理 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XmlDom._Default" %> <!DOCTYPE html PUBLIC &qu

  • jQuery Ajax 加载数据时异步显示加载动画

    ajax加载后台数据就不说的那么细了. 看下面代码首先前台上放置代码 <div id="loadgif" style="width:66px;height:66px;position:absolute;top:50%;left:50%;"> <img alt="加载中..." src="../../Images/loading1.gif"/> </div> 在js脚本文件中首先把这个图片动画

随机推荐