1. 程式人生 > >ztree通過ajax載入json資料中文亂碼的解決方法:springmvc配置

ztree通過ajax載入json資料中文亂碼的解決方法:springmvc配置

一、問題描述

使用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>  

然後問題就這樣解決了。^_^

相關推薦

ztree通過ajax載入json資料中文亂碼解決方法:springmvc配置

一、問題描述 使用zTree的非同步重新整理父級選單時,伺服器返回中文亂碼,但專案中使用了SpringMvc,已經對中文亂碼處理,為什麼還會出現呢? 此處為的非同步請求的配置: Java程式碼   async: {       enable: true,  

Python3 json.dumps中文亂碼解決方法

1.python檔案開頭匯入 from __future__ import unicode_literals import json string = '今天' print(json.dumps(str,ensure_ascii=False)) 參考資料:

關於http請求返回資料中文亂碼解決方法

在你的http工具類中 有 in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8")); 這行程式碼,注意將 ,"utf-8" 加入到輸入流,這樣在源頭

json傳遞中文亂碼解決方法以及解決request.getParameter()獲取引數為亂碼的問題

response.setContentType("text/json"); //類似返回值的話用“text/html”等response.setCharacterEncoding("UTF-8");//設定字符集為'UTF-8' 解決request.getPara

jsTree 通過ajax 獲取json資料 載入樹形選單

var ajaxTreeSample = function() { $("#tree_4").jstree({ "core" : { "themes" : { "

SSM 後臺返回資料給前臺,json中文亂碼解決方法

場景: 在實際運用場景中,當前臺發起請求後,我們需要從後臺返回資料給前臺,這時,如果返回的資料中包含中文,則經常會出現在後臺查詢出來都是好好,但是傳輸回去就莫名的亂碼了,而且,我們明明已經在 web.

java http 給 c++傳送json資料中文亂碼問題

首先感謝 http://blog.csdn.net/amazingrace/article/details/8794088         說重點: 專案: 伺服器c++,使用多語言字符集,預設GBK,直接用socket處理網路連線,自行解析http訊息(訊息真的很少,工作

AJAX POST資料中文亂碼解決

前端使用encodeURI進行編碼 var param = encodeURI(param); $.ajax({ url: 'url', methodtype: "POST", async: false,

Spring 3.2.* MVC通過Ajax獲取JSON資料報406錯誤

Spring 3.2.x通過@ResponseBody標籤返回JSON資料的方法都報406錯: Failed to load resource: the server responded with a status of 406 (Not Acceptable) 以及報錯描述: The resource i

【Chart.js】通過Ajax請求JSON資料來繪製圖表

背景   在使用Chart.js繪製圖表時,我們通常會有這樣的需求:從後臺方法動態獲取圖表的資料,而非Demo中使用的靜態資料。本文將分享如何使用Ajax動態請求JSON資料並且完成圖表的繪製。 解決方案 在html頁中新增對Ch

AngularJS學習筆記(3)——通過Ajax獲取JSON資料

通過Ajax獲取JSON資料 以我之前寫的與使用者互動的動態清單列表為例,使用JSON前todo.html程式碼如下: <!DOCTYPE html> <html ng-app="todoApp"> <head>

Dapper操作MySQL資料庫獲取JSON資料中文亂碼

前言 在專案中利用Dapper將JSON資料儲存到MySQL資料庫,結果發現JSON資料中的中文亂碼,特此記錄,希望對儲存JSON的童鞋能有所幫助,文中若有錯誤之處,還望批評指正。 Dapper獲取JSON資料亂碼(MySQL) 為了引出最終問題出在什麼地方,我們重頭開始進行講解,首先我們給出如下測試實體以及

PHP 陣列轉json ,字串中文亂碼解決 (unicode)

定義一個數組     $arr_tem = array( array( "id"=> 1, "name"=>"油庫", "OilMass"=>"", "YeweiVol"=&

java後臺傳遞json到前臺 中文亂碼解決方法

查了兩天 都說處理response 不過我搭建的框架裡沒有response(至少表面上沒有) 然後拼接了一個String作為json傳遞到前臺 但是遇到中文 前臺就顯示“?” 試過很多辦法 都不能解決 最後放棄了字串拼接 改為物件傳遞 結果成功了 controller對應方

AJAX傳值中文亂碼解決方法

Win32檔案系統程式設計 一丶瞭解什麼是檔案系統 檔案系統是抽象的.是windows在軟體層面提供的一層虛擬的資料結構. 檔案系統分為NTFS 跟 FAT32. 具體看看兩者的區別吧. 磁碟分割槽容量. 單個檔案容量. 意思就是一個檔案可以是多大的. NTFS 是可以4G以

Eclipse的properties文件中文亂碼解決方法

text content elf abd 問題 clas nbsp ips -o 轉自:http://jingyan.baidu.com/article/ed2a5d1f3381d709f6be17f8.html 打開Myeclipse,找到window這一欄,點

Codeblocks 中文亂碼解決方法

gif www 有效 file odi fault 輸入 打開文件 一個 1.修改源文件保存編碼 settings->Editor->gernal settings 右邊的Encoding group Box Use encoding when openin

前臺傳參到後臺中文亂碼解決方法

sele watermark img -o reset 圖片 亂碼 字符 size 解決前端傳參到後臺的字符集編碼問題!!!第一種:---java的web.xml中加上字符集過濾 (推薦使用)<filter> <filter-name>

Django 分頁查詢並返回jsons數據,中文亂碼解決方法

返回json 類型 模型 數據流 class stringio self option sci Django 分頁查詢並返回jsons數據,中文亂碼解決方法 一、引子 Django 分頁查詢並返回 json ,需要將返回的 queryset 序列化, demo 如下: #

sublime 中文亂碼解決方法

1.sublime 中 preference -> browse->packages 2.在彈出的視窗返回上一層 找到Installed Packages 資料夾 3.下載檔案 放到這個Installed Packages資料夾裡面