Java中利用Http請求傳書json數(shù)據(jù)出現(xiàn)亂碼如何解決,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)是一家專業(yè)提供鎮(zhèn)沅企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為鎮(zhèn)沅眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
var params = JSON.stringify(writParamList); top.dialog({ id: 'noticeList', title:'列表', width:900, height:500, url:'${root}/notice/multiNoticeList.do?params='+params, onclose:function(){ //location.reload(); } }).showModal();
后臺獲取json數(shù)據(jù),并轉(zhuǎn)成list,然后在ie模式,獲取到的json數(shù)據(jù)都出現(xiàn)中文亂碼,然后導(dǎo)致json不能解析報錯了
String params = request.getParameter("params"); logger.info("文書參數(shù)轉(zhuǎn)換前:》》"+params); params=StringEscapeUtils.unescapeJava(params); logger.info("文書參數(shù)轉(zhuǎn)換后:》》"+params); ObjectMapper mapper = new ObjectMapper(); JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, ApprWritUnionFormModel.class); /*ListwritUnionFormList = JSON.parseArray(params, FormModel.class);*/ List writUnionFormList=new ArrayList (); try { writUnionFormList = (List )mapper.readValue(params, javaType); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
針對上面問題,和同事討論,最開始打算base64加密來傳,然后發(fā)現(xiàn)base64加密中文出現(xiàn)問題,所以改成URLEncode的方式,前端加密兩遍,后臺在解密一遍
var params = JSON.stringify(writParamList); top.dialog({ id: 'noticeList', title:'列表', width:900, height:500, url:'${root}/notice/multiNoticeList.do?params='+encodeURI(encodeURI(params)), onclose:function(){ //location.reload(); } }).showModal();
后臺代碼修改,解碼一遍,然后發(fā)現(xiàn)在ie也正常
String params = request.getParameter("params"); logger.info("文書參數(shù)轉(zhuǎn)換前:》》"+params); //params=StringEscapeUtils.unescapeJava(params); // byte[] buffer=Base64Utils.decodeFromString(params); // params = new String(buffer); try { params=URLDecoder.decode(params,"utf-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } logger.info("文書參數(shù)轉(zhuǎn)換后:》》"+params); ObjectMapper mapper = new ObjectMapper(); JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, ApprWritUnionFormModel.class); /*ListwritUnionFormList = JSON.parseArray(params, FormModel.class);*/ List writUnionFormList=new ArrayList (); try { writUnionFormList = (List )mapper.readValue(params, javaType); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
關(guān)于Java中利用Http請求傳書json數(shù)據(jù)出現(xiàn)亂碼如何解決問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。