一、問題描述
使用zTree的異步刷新父級菜單時,服務(wù)器返回中文亂碼,但項目中使用了SpringMvc,已經(jīng)對中文亂碼處理,為什么還會出現(xiàn)呢?
此處為的異步請求的配置:
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>
返回的結(jié)果有中文亂碼:
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"
}
]
二、解決方案
經(jīng)過排查,發(fā)現(xiàn)是SpringMvc中文字符處理的supportedMediaTypes少了一種類型。
從瀏覽器發(fā)送的請求來看:
異步刷新使用的是post請求,但從服務(wù)器返回的時候,Content-Type為:text/plain;charset=ISO-8859-1
charset是ISO-8859-1,而不是UTF-8,而SpringMvc處理的中文亂碼沒有包含這種類型,所以導(dǎo)致中文亂碼。
所以最后的解決方法是在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>
總結(jié)
以上所述是小編給大家介紹的解決Ajax加載JSon數(shù)據(jù)中文亂碼問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- 用ajax傳遞json到前臺中文出現(xiàn)問號亂碼問題的解決辦法
- JQuery ajax 返回json時出現(xiàn)中文亂碼該如何解決