Maison >Java >javaDidacticiel >Comment résoudre le problème lorsque Java renvoie une requête json en chinois et la transforme en point d'interrogation

Comment résoudre le problème lorsque Java renvoie une requête json en chinois et la transforme en point d'interrogation

WBOY
WBOYavant
2023-04-15 09:25:071939parcourir

java renvoie une requête json et le caractère chinois est transformé en point d'interrogation

Il s'avère que dans un projet personnel, lors de l'utilisation du formulaire de données de layui pour obtenir des données, le problème de la transformation du caractère chinois en point d'interrogation ne se produit pas

Plus tard, j'ai modifié le projet et j'ai constaté que les données json renvoyées étaient devenues chinoises sur la page Terminé ? ? ? point d'interrogation.

Nous avons donc commencé à rechercher la cause du problème. Tout d'abord, assurez-vous que l'en-tête de la page jsp utilise le codage UTF-8 :

<%@ page="" language="java" contenttype="text/html; charset=UTF-8" pageencoding="UTF-8">

Puisqu'il ne s'agit pas d'un problème de page, il doit s'agir d'un problème d'arrière-plan. est :

    /**      * 获取json列表      */   
      @ResponseBody  
      @RequestMapping("/getJsonAF02")  
      public void getManyCategory(Page page, HttpServletRequest request,HttpServletResponse response) throws  Exception{       
           logBefore(logger, "列表AF02");    
                // if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}        
               // //校验权限       
                 PageData pd = this.getPageData();     
                 JSONObject jsonObject = new JSONObject();  
                 PrintWriter out = response.getWriter();
                 try { 
                         page.setPd(pd);  
                         page.setCurrentPage(Integer.parseInt(pd.getString("page"))); 
                         pd.put("OPERATION_NUM", "10001"); 
                         ListvarList = af02Service.listForSCJ(page);
                         // 列出AF02列表
                         //前台通过key值获得对应的value值 
                         jsonObject.put("code", 0);  
                         jsonObject.put("msg", "测试"); 
                         jsonObject.put("count",page.getTotalResult());
                         jsonObject.put("data", varList);
                     } catch (Exception e) { 
                      logger.error(e.toString(), e);
                     }  
                      String result = jsonObject.toString(); 
                       out.write(result);
                       out.close(); 
                     }

Après vérification, j'ai découvert qu'après avoir ajouté réponse.setContentType("text/html;charset=utf-8"); à ce code :

  /**      * 获取json列表      */ 
      @ResponseBody  
      @RequestMapping("/getJsonAF02")
      public void getManyCategory(Page page, HttpServletRequest request,HttpServletResponse response) throws  Exception{  
             logBefore(logger, "列表AF02");  
             // if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} 
             //校验权限  
               PageData pd = this.getPageData();
               response.setContentType("text/html;charset=utf-8");// 加上这个处理问号 
               JSONObject jsonObject = new JSONObject();
               PrintWriter out = response.getWriter();
               try { 
                   page.setPd(pd); 
                   page.setCurrentPage(Integer.parseInt(pd.getString("page")));
                   pd.put("OPERATION_NUM", "10001");
                   ListvarList = af02Service.listForSCJ(page); 
                   // 列出AF02列表 
                   //前台通过key值获得对应的value值
                   jsonObject.put("code", 0);
                   jsonObject.put("msg", "测试");
                   jsonObject.put("count",page.getTotalResult());
                   jsonObject.put("data", varList); 
               } catch (Exception e) { 
                    logger.error(e.toString(), e); 
                    String result = jsonObject.toString(); 
                    out.write(result);
                    out.close();  
                 }

Lorsqu'il est transmis à la page, les caractères chinois tronqués ne seront pas apparaît

Le fichier de configuration springmvc original du projet ultérieur Il ne contient aucune configuration pertinente. Il y a cette configuration dans le projet personnel précédent :

<%@ page="" language="java" contenttype="text/html; charset=UTF-8" pageencoding="UTF-8">

Eh bien, j'ai marché sur un piège et je l'ai partagé

json est revenu en chinois. plein de points d'interrogation

Ajoutez

produces = "text/plain;charset=UTF-8"

Comment résoudre le problème lorsque Java renvoie une requête json en chinois et la transforme en point dinterrogation

à RequestMapping Par conséquent, je crois que tout le monde a une compréhension plus profonde de "Comment résoudre le problème de "java renvoie la demande json chinoise en point d'interrogation", vous pourriez aussi bien le faire en pratique! Il s'agit de ce site. Pour plus de contenu connexe, vous pouvez accéder aux canaux de demande pertinents. Suivez-nous et continuez à apprendre !

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer