java返回json請求中文變成問號的問題及解決
java返回json請求中文變成問號
原來在個人項目時,用layui的數(shù)據(jù)表格獲取數(shù)據(jù)時,不會出現(xiàn)中文變問號問題
后來換了個項目,發(fā)現(xiàn)返回的json數(shù)據(jù)到頁面中文變成了???問號。
于是開始排查問題出現(xiàn)的原因,首先jsp頁面頭部確保使用了UTF-8編碼:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
既然不是頁面的問題,肯定就是后臺問題,之前的后臺代碼是:
? ? /** ?? ? * 獲取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;} ?? ??? ?// //校驗權(quán)限 ?? ??? ?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"); ? ?? ??? ??? ?List<PageData> varList = af02Service.listForSCJ(page); // 列出AF02列表?? ?? ?? ??? ??? ?//前臺通過key值獲得對應(yīng)的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(); ? ? }
排查了一下,發(fā)現(xiàn)在這段代碼上加上response.setContentType("text/html;charset=utf-8");:
? /** ?? ? * 獲取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;} ?? ??? ?// //校驗權(quán)限 ?? ??? ?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"); ? ?? ??? ??? ?List<PageData> varList = af02Service.listForSCJ(page); // 列出AF02列表?? ?? ?? ??? ??? ?//前臺通過key值獲得對應(yīng)的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(); ? ? }
傳到頁面就不會出現(xiàn)中文亂碼了
原來的后來的項目的springmvc配置文件里面沒有相關(guān)的配置,之前的個人項目上有這段配置:
<mvc:annotation-driven> ? ? ? ? <mvc:message-converters register-defaults="true"> ? ? ? ? <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> ? ? ? ? ? ? ? ? <property name="supportedMediaTypes" ?value="application/json;charset=UTF-8"/> ? ? ? ? ? ? </bean> ? ? ? ? </mvc:message-converters> ? ? </mvc:annotation-driven>
嗯,算是踩了個坑,分享一下
json返回中文全是問號
在RequestMapping里加上
produces = "text/plain;charset=UTF-8"
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java開發(fā)ServiceLoader實現(xiàn)機制及SPI應(yīng)用
這篇文章主要為大家介紹了java開發(fā)ServiceLoader實現(xiàn)機制及SPI應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10springboot讀取resource配置文件生成容器對象的示例代碼
這篇文章主要介紹了springboot讀取resource配置文件生成容器對象的示例代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07舉例解析Java多線程編程中需要注意的一些關(guān)鍵點
這篇文章主要介紹了Java多線程編程中需要注意的一些關(guān)鍵點,包括ThreadLocal變量與原子更新等一些深層次的內(nèi)容,需要的朋友可以參考下2015-11-11springboot框架中如何整合mybatis框架思路詳解
這篇文章主要介紹了springboot框架中如何整合mybatis框架,本文通過示例圖文相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下2022-12-12淺析Java中對象的創(chuàng)建與對象的數(shù)據(jù)類型轉(zhuǎn)換
這篇文章主要介紹了Java中對象的創(chuàng)建與對象的數(shù)據(jù)類型轉(zhuǎn)換,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2016-01-01SpringBoot+kaptcha實現(xiàn)驗證碼花式玩法詳解
這篇文章主要想和大家聊聊kaptcha的用法,畢竟這個已經(jīng)有16年歷史的玩意還在有人用,說明它的功能還是相當強大的,感興趣的小伙伴可以了解一下2022-05-05