Cette fois, je vais vous montrer comment gérer les caractères chinois tronqués dans les données lorsque Ajax charge des données JSon. Quelles sont les précautions pour résoudre le problème des caractères chinois tronqués dans les données lorsque Ajax charge JSon. data Ce qui suit est un cas pratique, jetons un coup d'œil ensemble.
1. Description du problème
Lors de l'utilisation de l'actualisation asynchrone du menu parent par zTree, le serveur renvoie des caractères chinois tronqués, mais SpringMvc est utilisé dans le projet. Les caractères chinois tronqués ont été traités, pourquoi apparaissent-ils encore ?
Voici la configuration de la requête asynchrone :
Code Java
async: { enable: true, url: basePath + '/sysMenu/listSysMenu', autoParam: ["id=parentId"] }
Traitement des caractères chinois SpringMvc :
Code 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>
Les résultats renvoyés contiennent des caractères chinois tronqués :
Code 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" } ]
Solution
Après. Après enquête, il a été constaté qu'il manquait un type dans les types de médias pris en charge par le traitement des caractères chinois SpringMvc.
À en juger par la requête envoyée par le navigateur :
L'actualisation asynchrone utilise la demande de publication, mais lorsqu'elle est renvoyée par le serveur, le type de contenu est : text/plain ;charset=ISO-8859-1
charset est ISO-8859-1, pas UTF-8, et les caractères chinois tronqués traités par SpringMvc ne contiennent pas ce type, donc des caractères chinois tronqués sont provoqués.
La solution finale consiste donc à ajouter le type text/plain au traitement chinois SpringMvc, comme suit :
Code Java
<value>text/plain;charset=UTF-8</value>
Les détails sont les suivants :
Java Code
application/json;charset=UTF-8 text/html;charset=UTF-8 <value>text/plain;charset=UTF-8</value>
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Ajax+Servlet pour implémenter un lien déroulant sans actualisation (avec code)
ajax pour obtenir des données json Comment utiliser
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!