首頁 > web前端 > js教程 > 主體

Ajax載入JSon資料時資料內中文亂碼怎麼辦

php中世界最好的语言
發布: 2018-03-30 17:41:14
原創
1650 人瀏覽過

這次帶給大家Ajax載入JSon資料時資料內中文亂碼怎麼辦,解決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程式碼

 
   
    application/json;charset=UTF-8 
  text/html;charset=UTF-8 
  <value>text/plain;charset=UTF-8</value> 
   
登入後複製

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

實作無刷新下拉動連線的Ajax+Servlet(附程式碼)

ajax取得json數據為undefined應該如何使用

以上是Ajax載入JSon資料時資料內中文亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!