解决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": "???????","menuUrl": "http://localhost:8080/imovie-manage/sysMenu/treeSysMenuUI","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数据中文乱码问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |